查询 Big Query 重复模式

Posted

技术标签:

【中文标题】查询 Big Query 重复模式【英文标题】:Querying Big Query repeated mode 【发布时间】: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 - 你能展示它给你的东西吗? 【参考方案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 不是唯一的,那么您可能需要添加一个主键样式列。

【讨论】:

以上是关于查询 Big Query 重复模式的主要内容,如果未能解决你的问题,请参考以下文章

Big Query 透视和聚合重复字段

BIG QUERY SQL:如何在具有相同唯一键但访问期间不同的访问中查找不同的重复集?

当Big Query加载失败并且CSV表遇到太多错误时,获取更多信息,放弃[重复]

Big Query firebase 分析,查询客户的最后请求

找出每个字段在 Google Big Query 中占用的空间量

Big Query 命令行:附属查询