在bigquery上查询项目中的所有数据集和表?

时间:2017-01-09 16:30:46

标签: firebase google-bigquery firebase-analytics

我目前正在尝试用我从BigQuery获得的数据创建自己的分析面板。我正确地输入了所有数据,并且能够单独查询每个表或查询特定数据集中的每个表,但不查询项目中的每个数据集。

简单地说,我想一次查询BigQuery中的每个表。 BigQuery中的表格由Firebase Analytics填充,可能会更改,恕不另行通知,添加或删除。

我知道查询中每个表JOIN的方法,但值是硬编码的。我需要一种方法,我可以提供通配符并自动查询每个表。

任何帮助都会很棒,谢谢!

2 个答案:

答案 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 ...
);