在 BigQuery 界面中使用变量名称创建表

Ben*_*n P 4 google-bigquery

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

DECLARE id STRING;
SET id = '123';

CREATE OR REPLACE TABLE test.id AS(
SELECT * FROM dataset.table
)
Run Code Online (Sandbox Code Playgroud)

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

小智 8

concat如果您知道表架构,为什么不直接使用 Execute Immediate呢?

EXECUTE IMMEDIATE CONCAT('CREATE TABLE `', id, '` (column_name STRING)');
Run Code Online (Sandbox Code Playgroud)

  • 这是完美的,完美地避免了动态的缺乏。值得注意的是,您可以使用 FORMAT 功能。```执行立即格式('创建表`%s`(列名字符串)',id);```` (3认同)

Nic*_*_Kh 3

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

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