我目前正在尝试用我从BigQuery获得的数据创建自己的分析面板。我正确地输入了所有数据,并且能够单独查询每个表或查询特定数据集中的每个表,但不查询项目中的每个数据集。
简单地说,我想一次查询BigQuery中的每个表。 BigQuery中的表格由Firebase Analytics填充,可能会更改,恕不另行通知,添加或删除。
我知道查询中每个表JOIN
的方法,但值是硬编码的。我需要一种方法,我可以提供通配符并自动查询每个表。
任何帮助都会很棒,谢谢!
答案 0 :(得分:6)
不幸的是,如果不事先知道数据集名称,就无法编写可查询所有数据集中所有表的单个查询。
但是,如果您可以以编程方式构造查询,则可以使用BigQuery的datasets.list API获取所有数据集名称,然后构建一个查询,使用如上所述的表通配符获取这些数据集中的所有表。 / p>
答案 1 :(得分:1)
您是否看过wildcard tables上的文档?它给出的例子是:
#standardSQL
SELECT
max,
ROUND((max-32)*5/9,1) celsius,
mo,
da,
year
FROM
`bigquery-public-data.noaa_gsod.gsod19*`
WHERE
max != 9999.9 # code for missing data
AND _TABLE_SUFFIX BETWEEN '29'
AND '40'
ORDER BY
max DESC;
通配符表适用于表级,但不适用于数据集级别 - 因此您仍需要在所有数据集的表之间执行联合,例如:
SELECT *
FROM (
SELECT * FROM `first-dataset.*` UNION ALL
SELECT * FROM `second-dataset.*` UNION ALL
SELECT * FROM ...
);