【问题标题】:bigquery - partition on custom fields -- only for standardSQL?bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?
【发布时间】:2018-02-15 11:16:46
【问题描述】:

我刚刚看到我可以在 BigQuery 中创建一个custom partitioned 表。含义由任何timestamp 列划分。

但是,新创建的表只能从StandardSQL访问和查询!

有没有办法从旧版查询新表?

【问题讨论】:

    标签: google-bigquery partitioning legacy-sql


    【解决方案1】:

    就在documentation 的开头说限制您没有旧版 SQL 支持。

    分区表受到以下限制:

    • 分区列必须是标量 DATE 或 TIMESTAMP 柱子。虽然列的模式可能是 REQUIRED 或 NULLABLE,但它 不能重复(基于数组)。此外,分区 列必须是顶级字段。您不能使用来自 RECORD (STRUCT) 作为分区列。
    • 您不能使用旧版 SQL 查询分区表或将查询结果写入分区表 表。
    • 查询分区表时不能使用通配符表 表。
    • 您不能使用 DML 语句来修改分区表。

    【讨论】:

    • 路线图上是否有旧版支持?您可以将有关缺少对 Legacy 的支持的信息添加到 UI 中,例如在 ? at Partition 字段中。
    • 没有提到考虑,所以只是猜测。
    • 没有计划支持旧版 SQL。我们认为投资更多的新功能比支持将被弃用的旧 SQL 更好。新功能通常只支持标准 SQL。
    【解决方案2】:

    您只需将 LegacySql 声明为false,例如:

    var projectId = 'xxxxxxx';
        
    var request = {
      query: 'select * from project.database.table',
      useLegacySql: false
    };
    var queryResults = BigQuery.Jobs.query(request, projectId);
    

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多