Big Query For In未从查找表中拾取表路径



我有一个查找表,其中包含名为all_tables的大查询表中的完全限定表路径列表。例如

|table_list|
|----------|
|project_name.dataset_name1.table_1|
|project_name.dataset_name2.table_1|
|project_name.dataset_name3.table_1|
|project_name.dataset_name4.table_1|
|project_name.dataset_name5.table_1|

我正在尝试迭代这些表,以提取出另一个过程所需的元素,该过程使用BigQuery中的for in语法。这是我使用的查询的简化版本

```
FOR table IN (select * from my_project.my_dataset.all_tables)
DO
select * from table;
END FOR;
```

这不起作用。它正确地提取了表的列表,但当它在第3行select语句中替换数据集名称时,它说

**Invalid value: Table "table" must be qualified with a dataset (e.g. dataset.table)**

我知道错误是什么,但我不知道如何使它将表的值"视为"表路径。

所有路径都是正确的,我这样做是因为我在多个数据集上查询多个表以进行表创建查询。

您应该使用一个动态sql来将表名作为变量引用,因此请考虑以下查询:

FOR table IN (select * from my_project.my_dataset.all_tables)
DO
EXECUTE IMMEDIATE FORMAT("""
SELECT * FROM %s;
""", table.table_list);
END FOR;

最新更新