Google bigquery 在BigQuery UI中使用变量名创建表

Google bigquery 在BigQuery UI中使用变量名创建表,google-bigquery,Google Bigquery,我正在尝试编写一个BigQuery脚本,可以将其存储为一个过程,我希望我传递的参数中的一个用于该脚本写出的表名,例如: DECLARE id STRING; SET id = '123'; CREATE OR REPLACE TABLE test.id AS( SELECT * FROM dataset.table ) 但是,在本例中,创建表时使用的是名称id,而不是“id”变量123的值。是否有任何方法可以使用BigQuery UI中声明的变量的值动态创建表?到目前为止,我们已经正式发布了

我正在尝试编写一个BigQuery脚本,可以将其存储为一个过程,我希望我传递的参数中的一个用于该脚本写出的表名,例如:

DECLARE id STRING;
SET id = '123';

CREATE OR REPLACE TABLE test.id AS(
SELECT * FROM dataset.table
)

但是,在本例中,创建表时使用的是名称
id
,而不是“id”变量
123
的值。是否有任何方法可以使用BigQuery UI中声明的变量的值动态创建表?

到目前为止,我们已经正式发布了文档,该文档仍处于测试阶段,利用动态参数(变量)作为SQL查询中值的占位符。但是,根据文档,查询参数不能用于SQL对象标识符:

参数不能用作标识符、列的替代项 名称、表名或查询的其他部分


也许你可以。您可以创建一个包含所有要查询的子表的通配符表,并使用
WHERE
子句来选择所需的任何子表。请注意,表必须具有相同的模式。

如果您知道表模式,为什么不使用Execute Immediate with
concat

EXECUTE IMMEDIATE CONCAT('CREATE TABLE `', id, '` (column_name STRING)');

现在不能使用BigQuery脚本执行此操作。将来可能会以EXECUTE IMMEDIATE的形式支持它,请监视BigQuery发行说明。您可以将EXECUTE IMMEDIATE与Concat(…)一起使用。这是一种完美的方法,可以避免动态查询的不足。值得注意的是,您可以使用格式功能<代码>执行即时格式(“创建表“%s”(列名称字符串)”,id)