我想在BQ做这样的事情。这些表有不同的模式。任何想法如何实现这一目标?
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID, Withdrawal_this_hour FROM `tb1`
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID, Refill_this_hour FROM `tb2`
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID, changes_this_hour, net_amount, date from `tb3`
提前致谢..
列必须相同,所以像这样:
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
Withdrawal_this_hour, NULL as Refill_this_hour,
NULL as changes_this_hour, NULL as net_amount, NULL as date
FROM `tb1`
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
NULL, Refill_this_hour, NULL, NULL, NULL
FROM `tb2`
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
NULL, NULL, changes_this_hour, net_amount, date
FROM `tb3`
对于联合,所有表格的所有列数及其数据必须相同big query docs您可以尝试使用cte如下所示
with cte as (
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
Withdrawal_this_hour, NULL as Refill_this_hour,
NULL as changes_this_hour, NULL as net_amount, NULL as date
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
NULL, Refill_this_hour, NULL, NULL, NULL FROM tb2
UNION ALL
SELECT YYYYMMDDHH, CONTAINER, Parent_Container, PROTOTYPE_ID,
NULL, NULL, changes_this_hour, net_amount, date
FROM tb3
) select * from cte