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

标签 sql google-bigquery

用不同的 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/

相关文章:

sql - 不同项目中表之间的 BigQuery JOIN

google-bigquery - bigquery 嵌套对象 : No such field

google-bigquery - 无法使用 Java Bigquery Client API 在 BigQuery 中写入日期

sql - 在限制行大小和表成员资格的同时加速内部联接和子查询

mysql - 'IN/ALL/ANY' 子查询中的未知列

sql - 是什么原因导致 “Syntax error in INSERT INTO statement”

sql - 在数组上应用类似函数是 SQL Server

google-bigquery - 如何通过 BigQuery 获取 BigQuery 表元数据(记录计数或上次更新日期或创建日期)

json - 错误 : googleapi: Error 400: Field CONSENTS is type RECORD but has no schema, 无效

php - 在 PHP MySQL 搜索中返回 5 个结果