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 中按命中数的升序显示数据的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:使用 UNNEST 检查数组的内容

在 BIGQUERY 上使用 UNNEST 左连接

BigQuery - 为啥在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?

一次选择中的 Bigquery 多个 unnest

Bigquery:UNNEST 重复与展平表性能

Bigquery unnest hits - 重复值)