[英]BigQuery select multiple tables with different column names
考虑我的数据集 my_dataset 中的以下 BigQuery 表架构:
我现在想使用以下方法联合所有表:
select * from `my_dataset.*`
但是,这不会产生第二组表的 CODE 列。 根据我的理解,将采用数据集中第一个表的模式。
所以结果是这样的:
| NAME | NUMBER |
__________________
| John | 123456 |
| Mary | 123478 |
| ... | ...... |
| Abdul | null |
| Ariel | null |
我试图利用INFORMATION_SCHEMA
以便分别选择两组表,然后将它们合并:
with t_code as (
select
table_name,
from my_dataset.INFORMATION_SCHEMA.COLUMNS
where column_name = 'CODE'
),
select t.NAME, t.CODE as NUMBER from `my_dataset.*` as t
where _TABLE_SUFFIX in (select * from t_code)
但是,脚本仍然会在 my_dataset 的第一个表中查找其架构,并将返回: Error Running Query: Name CODE not found inside t
。
所以现在我不知所措:如何在不必一张一张联合的情况下联合我所有的表? IE。 如何在第二组表中选择 CODE 作为 NUMBER。
注意:虽然问题似乎是在这里提出的,但接受的答案似乎并没有真正回答这个问题(就我而言)。
我看到你可以做的技巧是首先通过运行收集所有代码
create table `my_another_dataset.codes` as
select * from `my_dataset.*` where not code is null
然后对任何一个带有number
列的表进行任何简单的假更新 - 这将使带有number
列的模式成为默认值。 所以现在你可以收集所有的数字
create table `my_another_dataset.numbers` as
select * from `my_dataset.*` where not number is null
最后然后你可以做简单的联合
select * from `my_another_dataset.numbers` union all
select * from `my_another_dataset.codes`
注意:另请参阅我在您的问题下方的评论
SELECT
borrow.id AS `borrowId`,
IF(borrow.created_date IS NULL, '', borrow.created_date) AS `borrowCreatedDate`,
IF(borrow.return_date IS NULL, '', borrow.return_date) AS `borrowReturnDate`,
IF(borrow.return_date IS NULL, '0', '1') AS `borrowIsReturn`,
IF(person.card_identity IS NULL, '', person.card_identity) AS `personCardIdentity`,
IF(person.fullname IS NULL, '', person.fullname) AS `personFullname`,
IF(person.phone_number IS NULL, '', person.phone_number) AS `personPhoneNumber`,
IF(book.book_name IS NULL, '', book.book_name) AS `bookName`,
IF(book.year IS NULL, '', book.year) AS `bookYear`
FROM tbl_tbl_borrow AS borrow
LEFT JOIN tbl_person AS person
ON person.card_identity = borrow.person_card_identity
LEFT JOIN tbl_book AS book
ON book.unique_id = borrow.book_unique_id
ORDER BY
borrow.return_date ASC, person.fullname ASC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.