在 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_name
和 qty_vistis
是 struct
中的数组,称为 page_visits
。基本上,我的最终结果应该是一个三行表(由session_id
、country
和vendor_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 表以输出嵌套和重复的字段