在 bigquery 上查询项目中的所有数据集和表?
Query all datasets and tables within project on bigquery?
我目前正在尝试使用从 BigQuery 获取的数据创建自己的分析面板。我的所有数据都正确输入,并且能够单独查询每个 table 或特定数据集中的每个 table,但不能查询项目中的每个数据集。
简而言之,我想立即查询 BigQuery 中的每一个 table。 BigQuery 中的 tables 由 Firebase Analytics 填充,并且可能会更改,恕不另行通知,添加或删除一个。
我知道您在查询中 JOIN
每个 table 但值是硬编码的方法。我需要一种可以提供通配符并自动查询每个 table.
的方法
任何帮助都会很棒,谢谢!
您看过 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;
通配符 tables 适用于 table 级别,但是——不是数据集级别——所以你仍然需要在所有的 tables 之间执行联合您的数据集,例如:
SELECT *
FROM (
SELECT * FROM `first-dataset.*` UNION ALL
SELECT * FROM `second-dataset.*` UNION ALL
SELECT * FROM ...
);
遗憾的是,如果事先不知道数据集名称,您将无法编写可以查询所有数据集中所有 table 的单个查询。
但是,如果您可以以编程方式构建查询,则可以使用 BigQuery 的 datasets.list API 获取所有数据集名称,然后构建一个查询以获取这些数据集中的所有 table table 如上所述的通配符。
这里 SQL 获取给定项目的所有数据集:
SELECT schema_name
FROM `projectnamehere`.INFORMATION_SCHEMA.SCHEMATA
我目前正在尝试使用从 BigQuery 获取的数据创建自己的分析面板。我的所有数据都正确输入,并且能够单独查询每个 table 或特定数据集中的每个 table,但不能查询项目中的每个数据集。
简而言之,我想立即查询 BigQuery 中的每一个 table。 BigQuery 中的 tables 由 Firebase Analytics 填充,并且可能会更改,恕不另行通知,添加或删除一个。
我知道您在查询中 JOIN
每个 table 但值是硬编码的方法。我需要一种可以提供通配符并自动查询每个 table.
任何帮助都会很棒,谢谢!
您看过 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;
通配符 tables 适用于 table 级别,但是——不是数据集级别——所以你仍然需要在所有的 tables 之间执行联合您的数据集,例如:
SELECT *
FROM (
SELECT * FROM `first-dataset.*` UNION ALL
SELECT * FROM `second-dataset.*` UNION ALL
SELECT * FROM ...
);
遗憾的是,如果事先不知道数据集名称,您将无法编写可以查询所有数据集中所有 table 的单个查询。
但是,如果您可以以编程方式构建查询,则可以使用 BigQuery 的 datasets.list API 获取所有数据集名称,然后构建一个查询以获取这些数据集中的所有 table table 如上所述的通配符。
这里 SQL 获取给定项目的所有数据集:
SELECT schema_name
FROM `projectnamehere`.INFORMATION_SCHEMA.SCHEMATA