在 BigQuery 中嵌套查询结果 [重复]

Posted

技术标签:

【中文标题】在 BigQuery 中嵌套查询结果 [重复]【英文标题】:Nesting query results in BigQuery [duplicate] 【发布时间】:2021-06-01 17:38:44 【问题描述】:

我有一个查询,其结果如下所示:

session_id country vendor_id page_name qty_visits
123 a abc home 1
123 a abc shop 4
456 b abc home 78
456 b xyz home 9
456 b xyz cart 6

我想嵌套这个表,以便 page_nameqty_vistisstruct 中的数组,称为 page_visits。基本上,我的最终结果应该是一个三行表(由session_idcountryvendor_id 标识),第四列称为page_visits,它本身是一个有两列的结构,每一列是数组。其中一列有所有访问过的页面的列表,另一列有它被访问的次数。像这样

session_id country vendor_id page_visits.page_name page_visits.qty_visits
123 a abc home 1
shop 4
456 b abc home 78
456 b xyz home 9
cart 6

作为检查,select count(*) from final_table 的结果应该是 3,而不是 5(这是没有嵌套的结果)。

【问题讨论】:

【参考方案1】:

使用array_agg:

select
  session_id,
  country,
  vendor_id,
  array_agg(struct(page_name, qty_visits)) as page_visits
from mytable
group by session_id, country, vendor_id

【讨论】:

我在尝试中错过了GROUP BY!你是个天才!多谢!!我会尽快接受答案!

以上是关于在 BigQuery 中嵌套查询结果 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

bigquery 嵌套和重复字段查询

如何查询非规范化 BigQuery 表以输出嵌套和重复的字段

BigQuery 取消嵌套数组 - 获取重复项

UNION表时如何在Bigquery中重新排列/重新排序嵌套的重复列

BigQuery 将新列添加到子查询中的嵌套 STRUCT

处理 BigQuery(嵌套表)中的重复项