使用 Snowflake 中的任务调用存储过程
Calling a stored procedure using a task in Snowflake
我写了一个任务,每个周末调用这个过程。
这是我将值插入 table
的过程
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_();
但是当我检查时,上面的任务没有 运行 并且值没有插入 table。
因此,我尝试调试我的任务并编写了一个每分钟调用上述过程的任务。
create task mytask_hour
warehouse = COMPUTE_WH
schedule = '1 minute'
as
call TASK_();
即使这个任务也没有成功。不明白我哪里做错了
创建任务后,必须执行
ALTER TASK … RESUME
https://docs.snowflake.com/en/sql-reference/sql/create-task.html
创建任务是不够的。下一步是恢复它,因为默认情况下任务的状态为“暂停”。
你的情况是
ALTER TASK mytask_hour resume;
结果:任务按您的计划运行。
最重要的是你必须记住
- resuming/suspending 一项任务需要对任务的 OWNERSHIP 或 OPERATE 权限
- OWNERSHIP-role有EXECUTE TASK权限,可由ACCOUNT ADMIN分配
有关更多信息,请参阅此处:https://docs.snowflake.com/en/sql-reference/sql/alter-task.html
我写了一个任务,每个周末调用这个过程。
这是我将值插入 table
的过程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_();
但是当我检查时,上面的任务没有 运行 并且值没有插入 table。
因此,我尝试调试我的任务并编写了一个每分钟调用上述过程的任务。
create task mytask_hour
warehouse = COMPUTE_WH
schedule = '1 minute'
as
call TASK_();
即使这个任务也没有成功。不明白我哪里做错了
创建任务后,必须执行
ALTER TASK … RESUME
https://docs.snowflake.com/en/sql-reference/sql/create-task.html
创建任务是不够的。下一步是恢复它,因为默认情况下任务的状态为“暂停”。
你的情况是
ALTER TASK mytask_hour resume;
结果:任务按您的计划运行。
最重要的是你必须记住
- resuming/suspending 一项任务需要对任务的 OWNERSHIP 或 OPERATE 权限
- OWNERSHIP-role有EXECUTE TASK权限,可由ACCOUNT ADMIN分配
有关更多信息,请参阅此处:https://docs.snowflake.com/en/sql-reference/sql/alter-task.html