查询 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 SQL:如何在具有相同唯一键但访问期间不同的访问中查找不同的重复集?
当Big Query加载失败并且CSV表遇到太多错误时,获取更多信息,放弃[重复]
Big Query firebase 分析,查询客户的最后请求