我刚刚阅读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);
但是我收到了这个错误,
Error: Unrecognized name: _PARTITION_TIME;
我做错了什么?这与通配符查询有何不同?
答案 0 :(得分:4)
我做错了什么?
从下面一行 - 我假设你实际上并没有使用分区表,而是使用分片表
FROM `myproject.affiliate.log_20170101`
要处理BigQuery Standard SQL中的分片表,您应该使用_TABLE_SUFFIX
这与通配符查询有何不同?
Sharded table是一组名为tablename_YYYYMMDD的每日表,可以使用Legacy SQL中的Table wildcard functions或标准SQL中的_TABLE_SUFFIX查询 Partitioned table是按日内部分区的音调表