bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?
Posted
技术标签:
【中文标题】bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?【英文标题】:bigquery - partition on custom fields -- only for standardSQL? 【发布时间】:2018-02-15 11:16:46 【问题描述】:我刚刚看到我可以在 BigQuery 中创建一个custom partitioned
表。含义由任何timestamp
列划分。
但是,新创建的表只能从StandardSQL
访问和查询!
有没有办法从旧版查询新表?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?的主要内容,如果未能解决你的问题,请参考以下文章
尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表
使用自定义目标接收器将日志导出到 BigQuery(表分区)