Можно ли вызывать хранимую процедуру после КОГДА в ЗАДАЧЕ снежинки

avatar
Sarde
9 августа 2021 в 06:37
96
1
1

Я пытаюсь вызвать хранимую процедуру при создании задач снежинки после КОГДА

CREATE OR REPLACE TASK SCHEMA.TASK1
  warehouse = '..'
  schedule = '5 minute'
WHEN
    CALL DB.SCHEMA.CHECK_STATUS('arg1');
as
CALL DB.SCHEMA.ETL('arg1');

Действительно,

WHEN
    CALL DB.SCHEMA.CHECK_STATUS('arg1');

если да, как нам добиться возврата true или false в задаче. Ссылка на документацию по Snowflake — https://docs.snowflake.com/en/sql-reference/sql/create-task.html#examples

Я получаю следующую ошибку

Ошибка компиляции SQL: непредвиденная синтаксическая ошибка, строка 5 в позиции 9 'БД'.

Источник
Greg Pavlik
9 августа 2021 в 19:29
0

Я бы рассмотрел возможность объединения хранимых процедур CHECK_STATUS и ETL в один SP. Если условие CHECK_STATUS не выполняется, выходим из SP. Если он выполнен, продолжите часть ETL. Хотя вы можете использовать SYSTEM$STREAM_HAS_DATA, чтобы избежать запуска ETL, просто для запуска CHECK_STATUS потребуется работающее хранилище. Другими словами, он ничего не сэкономит, разделив проверку и действие ETL.

Ответы (1)

avatar
CMe
9 августа 2021 в 07:05
0

Учитывая документацию CREATE TASK.

В настоящее время поддерживается только функция SYSTEM$STREAM_HAS_DATA для оценки в параметре WHEN.

Sarde
9 августа 2021 в 07:55
0

Знаете ли вы какие-либо альтернативы? для достижения вышеуказанного сценария?

CMe
9 августа 2021 в 08:12
0

Вы можете создать хранимую процедуру, которая проверит ваше условие: если условие выполнено, оно запустит следующие запросы. Затем вы можете вызвать эту процедуру в своем ЗАДАЧЕ: если условие не выполняется, оно остановится на этом.