Выполнение зависимых запланированных запросов в BQ

#google-bigquery

#google-bigquery

Вопрос:

У меня есть набор запросов, которые я хочу запускать каждый месяц в BQ. Пусть A> B обозначает, что A ЗАВИСИТ от B. У меня есть следующие запросы:

  • вопрос 1
  • q2 > q1
  • q3 > q1
  • q4 > q1

Как вы можете видеть, запросы 2-4 зависят от ожидания завершения запроса 1. Мне очень нравится система «запланированных запросов» в bigquery, но могу ли я использовать ее для чего-то подобного? Основная проблема в том, что я не могу понять, как указать моему запланированному запросу подождать, пока какой-либо другой запрос не завершится в консоли BQ. Я знаю, что моей альтернативой здесь является использование заданий Google BQ, но действительно хотел посмотреть, возможно ли это осуществить с помощью системы запланированных запросов.

Ответ №1:

Запустите их все как один скрипт в запланированном запросе. Используйте BEGIN…Блок ИСКЛЮЧЕНИЙ:

 isert into q1_results
select ...
from table;

BEGIN
    isert into q2_results
    select ...
    from q1_results;
EXCEPTION WHEN ERROR THEN
END;

BEGIN
    isert into q3_results
    select ...
    from q1_results;
EXCEPTION WHEN ERROR THEN
END;
  

Комментарии:

1. Я рассматривал это, но моя главная проблема, несмотря на то, что q2, q3, q4 зависят только от q1. Как только q2 завершится с ошибкой, q3 даже не попытается выполнить. Это правильно?

2. О, извините. НАЧАТЬ… ТОГДА подойдет ИСКЛЮЧЕНИЕ .

3. Хм, я думаю, что это действительно может подойти, позвольте мне протестировать функциональность и вернуться к вам. Спасибо.