我写了一个任务,每个周末调用该过程。
以下是我将值插入表的过程
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_();
甚至这项任务也没有奏效。不明白我哪里做错了
仅仅创建一个任务是不够的。下一步是在任务具有状态"0"时恢复它;"暂停";默认情况下。
在您的情况下,声明是
ALTER TASK mytask_hour resume;
结果:任务按您的时间表运行。
最重要的是,你必须记住
- 恢复/暂停任务需要对任务拥有所有权或OPERATE权限
- OWNERSHIP角色具有EXECUTE TASK权限,该权限可以由ACCOUNT ADMIN分配
有关更多信息,请参阅此处:https://docs.snowflake.com/en/sql-reference/sql/alter-task.html
创建任务后,必须执行
ALTER TASK … RESUME
https://docs.snowflake.com/en/sql-reference/sql/create-task.html