"Есть ли способ получить данные между текущей датой и вчерашней датой с помощью запроса в 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 ответа
Я ожидаю, что сейчас будет 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)
Вы можете использовать:
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
порядок последних двух операндов имеет значение. Чем меньше значение первого, тем больше значение второго.