在官方最佳做法中我found:
按日期对表进行分区并查询相关分区;例如,WHERE _PARTITIONDATE =" 2017-01-01"仅扫描2017年1月1日的分区
我开始使用_PARTITIONDATE
伪列非常多,因为我发现以这种方式编写查询更容易,与_PARTITIONTIME
列和应用TIMESTAMP()
函数相反在我的日期,如example所示:
在哪里_PARTITIONTIME = TIMESTAMP(' 2016-03-28')
我想知道是否应继续使用_PARTITIONDATE
- 因为我无法找到更多文档。此外,与_PARTITIONTIME
相反,它不会在基于Web的BigQuery SQL编辑器中突出显示语法。
是_PARTITIONTIME
优先于_PARTTIONDATE
的官方方式吗?
答案 0 :(得分:3)
_PARTITIONDATE
未被记录,因为它与已发布的功能不对应。除非我们在release notes中宣布新功能,否则您应该使用_PARTITIONTIME
。
WHERE _PARTITIONTIME = TIMESTAMP('2016-03-28')
与
完全相同WHERE _PARTITIONTIME = '2016-03-28'
_PARTITIONTIME
列是时间戳,因此后一个示例右侧的字符串文字被强制为时间戳。在语法高亮方面,当前的UI在识别内置函数方面存在一些局限性,但即将推出的UI刷新有望解决这个问题。