Я использую запланированный запрос в Big Query, который добавляет данные за предыдущий день в таблицу Big Query. Данные за предыдущий день не всегда доступны, когда выполняется мой запрос, поэтому, чтобы убедиться, что у меня есть все данные, мне нужно рассчитать последнюю дату, доступную в моей таблице больших запросов.
Моей первой попыткой было написать следующий запрос:
SELECT *
FROM sourceTable
WHERE date >= (SELECT Max(date) from destinationTable)
Когда я выполняю этот запрос, правильно экспортируется только дата> = max (date). Однако запрос обрабатывает всю исходную таблицу, а не только J - max (дата). Таким образом, стоимость выше, чем ожидалось.
Я также пытался объявить переменную, используя "DECLARE" & "SET" (https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting).). Это решение работает нормально, и обрабатывается только J - max (дата). Однако BQ интерпретирует запрос с«ОБЪЯВЛЯЙТЕ» как скрипт, поэтому результаты не могут быть автоматически экспортированы в таблицу BQ с использованием запланированных запросов.
DECLARE maxDate date;
SET maxDate = (SELECT Max(date) from destinationTable);
SELECT *
FROM sourceTable
WHERE date >= maxDate
Есть ли другой способ сделать то, что я хотел бы? Или способ объявитьпеременная, использующая "DECLARE" & "SET" в запланированном запросе с таблицей назначения?
Спасибо!