首页 > 解决方案 > Where 子句在 Bigquery 的分区表中不起作用

问题描述

我想知道为什么 My SQL 不适用于分区表。还有什么应该是正确的查询?

这是我的示例表结构

另外,以下是我的查询:

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

;

请注意,该表每天按 business_date 列进行分区。

查询没有结果。但是查看实际表格应该会显示一些结果。

下面的查询有效:

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

标签: sqlgoogle-bigquerypartition

解决方案


要利用分区,您可能需要尝试构建查询,例如

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'

推荐阅读