我正在尝试编写一个可以存储为过程的BigQuery脚本,我希望将传递的参数之一用在脚本写出的表名中,例如:
@JsonProperty("names")
private List<Name> names;
但是,在此示例中,表是使用名称DECLARE id STRING;
SET id = '123';
CREATE OR REPLACE TABLE test.id AS(
SELECT * FROM dataset.table
)
而不是“ id”变量id
的值创建的。有什么方法可以使用BigQuery UI中声明的变量的值动态创建表?
答案 0 :(得分:4)
如果您知道表架构,为什么不只对concat
使用立即执行?
EXECUTE IMMEDIATE CONCAT('CREATE TABLE `', id, '` (column_name STRING)');
答案 1 :(得分:1)
到目前为止,我们已经正式发布BigQuery scripting文档,该文档仍处于Beta阶段,它利用动态参数(变量)作为SQL查询中的值的占位符。但是,根据Parameterized queries in BigQuery文档,查询参数不能用于SQL对象标识符:
参数不能用作标识符,列的替代 名称,表名或查询的其他部分。
答案 2 :(得分:0)
也许您可以use a wildcard table。您将创建一个包含所有要查询的子表的通配符表,并使用WHERE
子句选择所需的任何子表。请注意,表必须具有相同的架构。