Where 子句在 Bigquery 的分区 table 中不起作用

Where clause not working in a partitioned table from Bigquery

我想知道为什么我的 SQL 不能在分区的 table 上工作。另外,正确的查询应该是什么?

Here is the sample table structure I have

此外,以下是我的查询:

**SELECt * from `TestProj.table_name`
where business_date = '2021-01-31'
and item = '102064962'**

;

请注意,table 每天按 business_date 列划分。

查询无结果。但是查看实际 table 它应该会显示一些结果。

下面的查询有效:

 **SELECt * from `TestProj.table_name`
 where business_date = '2021-01-31';  **

To take advantage of partitions you might want to try structuring your query like:

WITH DATA_FROM_PARTITIONS AS(
SELECT * 
FROM `TestProj.table_name`
WHERE
business_date BETWEEN DATE('2021-01-31')
AND DATE('2021-02-01')),
SELECT * 
FROM DATA_FROM_PARTIONS 
WHERE item = '102064962'
AND business_date = DATE('2021-01-31');

第一个 AS 关键字限制了 BQ 查看的分区,从而减少了查询时间和成本。如果这对你不重要,你可以试试这个查询:

SELECT * FROM
`TestProj.table_name`
WHERE
business_date = DATE('2021-01-31')
AND item = '102064962'