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'
我想知道为什么我的 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'