gpt4 book ai didi

sql - BigQuery 标准 SQL 中具有不同架构的联合表

转载 作者:行者123 更新时间:2023-12-05 03:03:58 26 4
gpt4 key购买 nike

用不同的 Schema 附加表的最佳方法是什么?

表 0 架构

Table0 Schema

Table0 Preview

表 1 架构

Table1 Schema

Table1 Preview


这很好用

SELECT img1, NULL as img2 FROM `xxx.staging.table0` 
UNION ALL
SELECT img1, img2 FROM `xxx.staging.table1`

但是有没有一种方法可以在不必显式声明每一列的情况下附加表格?

将表 0 另存为也是一种好习惯

SELECT img1, CAST(NULL as string) as img2 FROM `modemutti-8d8a6.staging.table0` 

确保 img2 是一个字符串:

enter image description here

然后用完全相同的模式附加 2 个表?

SELECT * FROM `xxx.staging.table1ab` 
UNION ALL
SELECT * FROM `xxx.staging.table1`

最佳答案

以下是 BigQuery 标准 SQL

#standardSQL
SELECT * FROM `project.dataset.table1`
UNION ALL
SELECT * FROM `project.dataset.table0`
LEFT JOIN (SELECT '', '') ON FALSE

注意:在 (SELECT '', '') 中,您需要拥有与您拥有的额外字段数量一样多的 ''在 table1 中 - 所以两个表中的字段总数相同

您可以使用下面的虚拟数据来测试、玩上面的游戏

#standardSQL
WITH `project.dataset.table0` AS (
SELECT 'aaa' img1 UNION ALL
SELECT 'xxx' UNION ALL
SELECT 'yyy' UNION ALL
SELECT 'zzz'
), `project.dataset.table1` AS (
SELECT 'bbb' img1, 'ccc' img2, 'ddd' img3 UNION ALL
SELECT 'eee', 'fff', 'ggg'
)
SELECT * FROM `project.dataset.table1`
UNION ALL
SELECT * FROM `project.dataset.table0`
LEFT JOIN (SELECT '', '') ON FALSE

结果

Row     img1    img2    img3     
1 bbb ccc ddd
2 eee fff ggg
3 aaa null null
4 xxx null null
5 yyy null null
6 zzz null null

关于sql - BigQuery 标准 SQL 中具有不同架构的联合表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53363056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com