unnest 是不是始终在 Bigquery 中按命中数的升序显示数据
Posted
技术标签:
【中文标题】unnest 是不是始终在 Bigquery 中按命中数的升序显示数据【英文标题】:Does unnest always display data in ascending order of hit number in Bigqueryunnest 是否始终在 Bigquery 中按命中数的升序显示数据 【发布时间】:2019-12-20 17:07:53 【问题描述】:我在 Bigquery 中有一些包含以下列的数据
ID StartTime HitLevelData
我的问题是如果我想按 StartTime 的升序选择数据,我可以写
Select * FROM MY_TABLE ORDER BY StartTime
但是,如果我想在我的表中取消嵌套 HitLevel 数据并按 hitnumber 的升序显示,我需要 ORDER BY HITS.HITNUMBER
Select ID, STARTTIME, HITS.HITNUMBER FROM MY_TABLE, UNNEST(HITS) HTIS ORDER BY STARTTIME, HITS.HITNUMBER
或者我可以这样做
Select ID, STARTTIME, HITS.HITNUMBER FROM MY_TABLE, UNNEST(HITS) HTIS ORDER BY STARTTIME
我不确定默认情况下 unnest 是否总是按 hitnumber 的升序显示数据,或者我是否需要专门为其编写 order by 子句。
提前致谢!
【问题讨论】:
我相信从数组中选择会按照存储/写入的顺序返回它。至于您的两个查询,这实际上取决于您要完成的工作。话虽如此,如果您尝试实现某些特定逻辑,添加order by
语句可能是值得的。
【参考方案1】:
UNNEST 破坏输入 ARRAY 中元素的顺序,使用 ORDER BY 子句对行进行排序。
Source
您也可以搜索 UNNEST here 了解更多详情。
【讨论】:
以上是关于unnest 是不是始终在 Bigquery 中按命中数的升序显示数据的主要内容,如果未能解决你的问题,请参考以下文章