执行变量值Google BigQuery

问题描述 投票:0回答:1

我正在尝试执行该变量的值,但在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变量?

google-bigquery
1个回答
0
投票

虽然Mikhail是正确的,因为BigQuery不支持此历史上,但是BigQuery Scripting的[very新beta版本应该可以使您获得类似的结果:https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting

在这种情况下,您需要使用SET来分配变量的值,并且目前没有SET语句,但是支持条件,循环,变量等。 >

还支持存储过程,该存储过程可以通过带有传递的参数的EXEC执行,也可以在您的情况下使用。

((我认为这种脚本支持优于构建和执行字符串,因为您仍将获得查询的SQL验证等。)

一如往常使用Beta功能,在生产中请谨慎使用-但就其价值而言,到目前为止,我的经验非常稳定。

© www.soinside.com 2019 - 2024. All rights reserved.