“有没有办法通过Bigquery中的查询来获取当前日期到昨天日期之间的数据”

时间:2019-06-25 12:40:00

标签: mysql sql google-cloud-platform google-bigquery python-bigquery

“我正在使用查询来获取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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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时,后两个操作数的顺序很重要。首先是较小的值,其次是较大的值。