«Есть ли способ получить данные между текущей датой и вчерашней датой с помощью запроса в Bigquery» - PullRequest
0 голосов
/ 25 июня 2019

"Я использую запрос для получения данных с текущей даты на вчерашнюю дату в 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 ]

1 голос
/ 25 июня 2019

Я ожидаю, что выход будет на данный момент 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)    

Также обратите внимание, что когда вы используете МЕЖДУ - обе стороны включены, поэтому, если вам нужны только сегодняшние данные, вы можете просто использовать

AND DATE(ingestionTime) = CURRENT_DATE     

или только вчера - вы можете использовать

AND DATE(ingestionTime) = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
0 голосов
/ 25 июня 2019

Вы можете использовать:

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, порядок последних двух операндов имеет значение. Чем меньше значение первого, тем больше значение второго.

...