我正在尝试执行该变量的值,但在Google BigQuery中找不到有关该变量的文档。
DECLARE SQL STRING;
SELECT
SQL =
CONCAT(
"CREATE TABLE IF NOT EXISTS first.rdds_",
REPLACE(CAST(T.actime AS STRING), " 00:00:00+00", ""),
" PARTITION BY actime ",
" CLUSTER BY id ",
" OPTIONS( ",
" partition_expiration_days=365 ",
" ) ",
" AS ",
"SELECT * ",
"FROM first.rdds AS rd ",
"WHERE rd.actime = ",
"'", CAST(T.actime AS STRING), "'",
" AND ",
"EXISTS ( ",
"SELECT 1 ",
"FROM first.rdds_load AS rd_load ",
"WHERE rd_load.id= rd.id ",
")"
) AS SQ
FROM (
SELECT DISTINCT actime
FROM first.rdds AS rd
WHERE EXISTS (
SELECT 1
FROM first.rdds_load AS rd_load
WHERE rd_load.id= rd.id
)
) T;
我的变量将有很多行,这些脚本带有用于创建表的脚本,我需要执行此变量。
在SQL Server中要执行的变量是:
EXEC(@variable);
如何在Google BigQuery中执行SQL变量?
虽然Mikhail是正确的,因为BigQuery不支持此历史上,但是BigQuery Scripting的[very新beta版本应该可以使您获得类似的结果:https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
在这种情况下,您需要使用SET
来分配变量的值,并且目前没有SET
语句,但是支持条件,循环,变量等。 >
还支持存储过程,该存储过程可以通过带有传递的参数的EXEC
执行,也可以在您的情况下使用。
((我认为这种脚本支持优于构建和执行字符串,因为您仍将获得查询的SQL验证等。)
一如往常使用Beta功能,在生产中请谨慎使用-但就其价值而言,到目前为止,我的经验非常稳定。