如何解决BigQuery将嵌套表连接到另一个表
我正在尝试将一些项目数据(表1)的表与嵌套的项目ID的数组连接到,并将另一个表与项目数据(表2)(在这里,顺序很重要)
table1
proj_date num_proj_per_day proj_size proj_id(nested)
1/1/2020 4 150 a123
b456
c789
table2
proj_id(not nested) proj_loc lots_of_other_proj_fields....
a123 Los Angeles
b456 New York
c798 Los Angeles
d012 Denver
.... ....
期望的结果
proj_date num_proj_per_day proj_size proj_id(unnested) pro_loc
1/1/2020 4 150 a123 Los Angeles
1/1/2020 4 150 b456 New York
1/1/2020 4 150 c789 Los Angeles
如果我使用table1作为from编写sql代码,然后交叉联接unnest(proj_id),然后左联接table2,则能够实现此结果。 问题是我需要在from语句中包含table2,然后在未嵌套的(proj_id)上加入table1 。不幸的是,排序很重要,因为我必须将此新数据集(table1)合并到Looker中的现有数据集/框架(table2)
如何获得正确结果但不适用于我的应用的示例
SELECT
table1.*,table2.proj_loc
FROM table1
CROSS JOIN UNnesT(table1.proj_id) as unnested
LEFT JOIN table2
ON table2.proj_id = unnested.proj_id
我正在寻找类似下面的内容,但是您不能将嵌套嵌套在ON子句中-bigquery弹出错误“意外关键字UNnesT”
SELECT
table1.*,table2.proj_loc
FROM table2
LEFT JOIN table1
ON UNnesT(table1.proj_id)=table2.proj_id
提前谢谢您,让我知道是否需要澄清信息
解决方法
以下是用于BigQuery标准SQL
update
您可以使用问题中的示例数据来测试,玩转上面的示例
update mytable t
inner join (
select invoice,item,row_number() over(partition by invoice order by item) rn
from mytable
) t1 on t1.invoice = t.invoice and t1.item = t.item
set t.tax = 0
where t1.rn > 1
有输出
#standardSQL
SELECT proj_date,num_proj_per_day,proj_size,t2.*
FROM `project.dataset.table2` t2
JOIN `project.dataset.table1` t1
ON t2.proj_id IN UNNEST(t1.proj_id)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。