【问题标题】:Where clause not working in a partitioned table from BigqueryWhere 子句在 Bigquery 的分区表中不起作用
【发布时间】:2021-11-14 01:16:47
【问题描述】:

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

Here is the sample table structure I have

另外,下面是我的查询:

**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';  **

【问题讨论】:

  • 可能是第一个查询没有结果,因为商品的business_date与输入的日期不同
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: sql google-bigquery partition


【解决方案1】:

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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2014-01-26
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多