#javascript #sql #stored-procedures #snowflake-cloud-data-platform
#javascript #sql #хранимые процедуры #snowflake-cloud-data-platform
Вопрос:
Я написал задачу, которая вызывает процедуру каждые выходные.
Вот моя процедура, которая вставляет значения в таблицу
CREATE OR REPLACE TABLE TABLE1(DATABASE_ VARCHAR, TABLE_ VARCHAR); // Table to store values
CREATE OR REPLACE PROCEDURE TASK_() //Procedure to insert values into table
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
var str = '';
var stmt = snowflake.createStatement({sqlText: "INSERT INTO TABLE1 VALUES ('DB1','TB1')"});
stmt.execute();
return str;
$$;
Вот моя задача, которая вызывает описанную выше процедуру каждые выходные.
CREATE TASK mytask_hour
WAREHOUSE = COMPUTE_WH
SCHEDULE = 'USING CRON 0 0 * 1-12 SUN America/Los_Angeles'
TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'
as
call TASK_();
Но когда я проверил, вышеупомянутая задача не выполнялась, и значения не были вставлены в таблицу.
Итак, я попытался отладить свою задачу и написал задачу, которая вызывает указанную выше процедуру каждую минуту.
create task mytask_hour
warehouse = COMPUTE_WH
schedule = '1 minute'
as
call TASK_();
Даже эта задача не сработала. Не понимаю, где я делаю неправильно
Комментарии:
1. Как вы проверили, выполняется ли задача?
2. @Marcel Я проверил, запросив таблицу, которая выдала мне пустую таблицу
3. @R0bert добавление еще одной ссылки для устранения неполадок задач, проверьте это docs.snowflake.com/en/user-guide/tasks-ts.html
Ответ №1:
Недостаточно создать задачу. Следующий шаг — возобновить ее, поскольку задачи по умолчанию имеют статус «приостановлено».
В вашем случае оператор
ALTER TASK mytask_hour resume;
Следствие: задачи выполняются по вашему расписанию.
Кроме того, вы должны иметь в виду, что
- возобновление / приостановка задачи требует права СОБСТВЕННОСТИ или привилегии на выполнение задачи
- роль ВЛАДЕЛЬЦА имеет привилегию EXECUTE TASK, которая может быть назначена АДМИНИСТРАТОРОМ УЧЕТНОЙ ЗАПИСИ
Дополнительную информацию смотрите здесь: https://docs.snowflake.com/en/sql-reference/sql/alter-task.html
Комментарии:
1. Я просто хочу убедиться, что
SCHEDULE = 'USING CRON 0 0 * 1-12 SUN America/Los_Angeles' TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'
это правильно, т.Е. Он выполняет задачи каждые выходные2. Вы можете использовать этот веб-сайт для проверки выражения ur cronmaker.com
Ответ №2:
После создания задачи необходимо выполнить
ALTER TASK … RESUME
https://docs.snowflake.com/en/sql-reference/sql/create-task.html