Есть ли способ получить данные между текущей датой и вчерашней датой через запрос в 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


person Yash Saini    schedule 25.06.2019    source источник


Ответы (2)


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

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

person Gordon Linoff    schedule 25.06.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)    

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

AND DATE(ingestionTime) = CURRENT_DATE     

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

AND DATE(ingestionTime) = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
person Mikhail Berlyant    schedule 25.06.2019