【问题标题】:Querying Big Query repeated mode查询 Big Query 重复模式
【发布时间】:2019-04-17 10:03:10
【问题描述】:

我在 bigquery 表中存储了一组值。

Table Name : Embedding
Table Schema :

    {
        {
            field_name:"description",
            type:"string",
            mode:"nullable"
        },
        {
            field_name:"embedding",
            type:"float",
            mode:"repeated"       
        }
    }

我可以完美地插入数据。在 bigquery 的 webUI 中,预览数据也正常显示。但是当我查询数据时,我得到以下输出

SQL 查询 - select * from dataset.Embedding;

输出 -

[["0.3","hello new york"],["0.5","hello new york"],["0.1","hello new york"],["0.9","hello new york"],["0.3","hello new york"],["0.2","hello new york"],......,["0.8","hello new york"]]

这些值与描述一起重复,而不是像["0.3","0.5","0.1","0.9","0.3",...,"0.8"]这样得到一个值数组。

我也尝试了unnest 功能。但没有运气。 如何解决这个问题?

【问题讨论】:

  • 如果数据存储为多行,您将获得该结果。您似乎没有使用数组来存储数字。此外,您的查询不会返回该结果,因为列的顺序错误。
  • 那么@GordonLinoff,在 bigquery 中存储和访问数组的正确方法是什么?
  • 。 .我只是指出你有多行数据,如果查询返回多行。
  • @bigbounty 在 BigQuery 中你会想要添加一条记录,我相信它里面有一个重复的浮点数。类似于以下内容:` [ {“name”:“description”,“type”:“STRING”,“mode”:“REQUIRED”},{“name”:“embedding”,“type”:“RECORD”, “模式”:“需要”,“字段”:[{“名称”:“值”,“类型”:“FLOAT”,“模式”:“重复”}]}]`
  • the preview data is also shown properly - 你能展示它给你的东西吗?

标签: sql google-bigquery


【解决方案1】:

试试

SELECT em FROM dataset.Embedding AS E cross join E.embedding AS em

这会将数组的内容与表交叉连接,因此您可以实际查询它,就好像它们是表中的标量值一样。

【讨论】:

  • 我想避免加入。我正在寻找替代方法
  • 这需要太多时间。我将加入数百万行
  • 不,不需要太多时间。 BigQuery 并行处理这些任务。
【解决方案2】:

如果我理解正确,那么我认为array_agg 可以在这里帮助你。

类似:

SELECT description, ARRAY_AGG(embedding) AS embedding
FROM dataset.Embedding
GROUP BY 1

如果description 不是唯一的,那么您可能需要添加一个主键样式列。

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 2021-08-09
    • 2019-06-18
    • 2021-04-16
    • 2021-07-29
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多