运行 对仅 ID 不同的多个数据集的查询(大查询)

Running a query for multiple datasets only different by ID (Big Query)

我需要 运行 对 Big Query 中的多个数据集使用相同的 select 语句,仅 ID 不同(1568 - 3257 - 8432 等)此 select 语句还使用了连接来自同一数据集的表。我的问题是我们如何在不使用 UNION ALL 的情况下做到这一点?

SELECT * 
FROM test.1568.activity
INNER JOIN test.1568.employee on (activity.employee_id = employee.id)

有没有可能我们可以创建一个包含不同数据集的id的数组,然后使用循环为每个数据集处理该语句?

提前致谢。

您可以为其创建一个脚本,循环遍历并运行查询,如下所示:

DECLARE datasets ARRAY<STRING>;
DECLARE i INT64 DEFAULT 0;
DECLARE datasets_length INT64;

SET datasets = (SELECT ARRAY_AGG(schema_name) FROM `your-project-id.INFORMATION_SCHEMA.SCHEMATA`);
SET datasets_length = (SELECT ARRAY_LENGTH(datasets));

WHILE i < datasets_length DO
  EXECUTE IMMEDIATE format("""
    SELECT COUNT(1) table_count FROM `your-project-id.%s.__TABLES__`
  """, datasets[OFFSET(i)]);
  SET i = i + 1;
END WHILE;

此示例对项目中每个数据集中的表进行计数。您可以在 EXECUTE IMMEDIATE 语句中更改您想要在每个数据集上 运行 的内容。