如何在 BigQuery 中查询分区表

dor*_*010 1 google-bigquery

我只是在 BigQuery 上阅读分区表,无法找出最佳实践部分。我尝试运行以下

#standardSQL
SELECT *
FROM `myproject.affiliate.log_20170101`
WHERE _PARTITIONTIME BETWEEN TIMESTAMP_TRUNC(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 * 24 HOUR),DAY)
AND TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(),DAY);
Run Code Online (Sandbox Code Playgroud)

基于此文档链接

但我收到这个错误,

Error: Unrecognized name: _PARTITION_TIME;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?这与通配符查询有何不同?

Mik*_*ant 6

我究竟做错了什么?

从下面开始 - 我假设您实际上不是在使用分区表,而是在使用分片表

FROM `myproject.affiliate.log_20170101`
Run Code Online (Sandbox Code Playgroud)

要处理 BigQuery Standard SQL 中的分表,您应该使用_TABLE_SUFFIX

这与通配符查询有何不同?

分片表是一组日常表,命名为 tablename_YYYYMMDD,可以使用Legacy SQL 中的Table 通配符函数或标准 SQL 中的 _TABLE_SUFFIX进行查询
分区表是内部按天分区的调表