0

“我正在使用查询在 Bigquery 中获取从当前日期到昨天日期的数据,但我无法在 BQ 中获取昨天的日期”

SELECT COUNT (*) 
FROM `urbn-edw-prod.UrbnProcessingErrors.RetailFeedDimensionError` 
WHERE errorReason = "Invalid Merchandise SKUs" 
AND DATE(ingestionTime) between CURRENT_DATE and DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)

我认为这行代码没有给出昨天的日期

DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)

我想在 BQ 中获取从今天到昨天的数据,但我认为我使用了错误的查询,我希望现在输出为 500,但它给出的是 0

4

2 回答 2

1

我希望现在输出为 500,但它给出的是 0

这是因为您在下面的行中有错误的顺序

AND DATE(ingestionTime) between CURRENT_DATE and DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)   

相反,您应该使用

AND DATE(ingestionTime) between DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) and CURRENT_DATE    

我认为这行代码没有给出昨天的日期

DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)昨天给你 - 问题是如上所述的 - 但是,你也可以在下面使用

DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)    

另请注意,当您使用 BETWEEN 时 - 它的两侧都包括在内,因此如果您只需要今天的数据,您可以使用

AND DATE(ingestionTime) = CURRENT_DATE     

或者就在昨天 - 你可以使用

AND DATE(ingestionTime) = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
于 2019-06-25T13:07:52.967 回答
0

您可以使用:

WHERE errorReason = 'Invalid Merchandise SKUs' AND
      DATE(ingestionTime) >=  DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) AND
      DATE(ingestionTime) < CURRENT_DATE())

或者更简单地说:

WHERE errorReason = 'Invalid Merchandise SKUs' AND
      DATE(ingestionTime) = CURRENT_DATE())

当您使用BETWEEN最后两个操作数的顺序时很重要。较小的值在前,较大的值在后。

于 2019-06-25T12:56:12.263 回答