Unnest 2 级别 - Big Query 数组
Posted
技术标签:
【中文标题】Unnest 2 级别 - Big Query 数组【英文标题】:Unnest 2 levels - Big Query arrays 【发布时间】:2021-05-17 18:05:40 【问题描述】:考虑具有以下架构的 BQ 表
name
day
day.purchase
价值观
name day day.purchase
John [1,2] [ ['Coke', 'Fanta'], ['Pepsi', 'Fanta', 'Water'] ]
如何取消嵌套两个级别以便获得完整的表格?
John 1 'Coke'
John 1 'Fanta'
John 2 'Pepsi'
John 2 'Fanta'
John 2 'Water'
【问题讨论】:
样本数据与描述的数据模型不匹配。 @Marc - 呈现的模式和数据样本根本不匹配!即使您更新了它 - 看起来仍然很错误!我想你的意思是day.id
而不仅仅是day
【参考方案1】:
如果我正确地获取了您的架构以及示例数据 - 下面是要走的路
select name, id as day, purchase
from yourtable t, t.day, day.purchase
如果应用于您问题中的样本数据 - 输出是
【讨论】:
【参考方案2】:对于所描述的数据模型,您只需使用:
select n.name, the_day, the_purchase
from names n cross join
unnest(n.day) the_day cross join
unnest(the_day.purchase) the_purchase;
对于显示的数据,我认为您有两个单独的列:
select n.name, day, purchase
from names n cross join
unnest(n.days) day with offset nd join
unnest(n.purchases) purchase with offset np
on nd = np
【讨论】:
以上是关于Unnest 2 级别 - Big Query 数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在值列中搜索特定值并在 Big Query SQL 中替换为该特定值?
到 Big Query Data Transfer Service 的 Adwords 报告的值与 Adwords Manager 不同