0

我想使用两个 SQL 脚本使用bq query命令在 BigQuery 中创建和更新表。这是两个脚本:

1-创建表

EXECUTE IMMEDIATE 
    '''CREATE TABLE IF NOT EXISTS dataset.newtable (
        id STRING, ''' ||
        (SELECT STRING_AGG(
                segment || 
                " INT64 " ORDER BY segment
        ) FROM (
            SELECT DISTINCT segment FROM dataset.source
        )
    ) || 
    ''')''';

2-更新表格

EXECUTE IMMEDIATE 
    '''INSERT dataset.newtable (
        SELECT id, ''' ||
        ( SELECT STRING_AGG("COUNTIF(
            segment = '" ||
            segment ||
        "') AS " ||
        segment ORDER BY segment
    ) FROM (
        SELECT DISTINCT segment FROM dataset.source
    ) ) || 
    ''' FROM dataset.source GROUP BY 1 ORDER BY 1
)''';

使用这两个脚本作为bq query命令查询时,出现错误:

Syntax error: Expected keyword IMMEDIATE but got to end of the script at [1:8]

有没有其他方法可以做到这一点?

谢谢

4

1 回答 1

2

bq命令行工具中的默认查询方言是旧版 SQL。您需要切换到标准 SQL 方言才能运行脚本:

  1. --use_legacy_sql=false--nouse_legacy_sql标记到您的命令行语句。
  2. 为你的 sql 加上前缀#standardSQL

在此处输入图像描述

您还可以将标准 SQL 设置为默认值。见这里

于 2020-07-28T13:50:36.313 回答