使用 Snowflake 中的任务调用存储过程

我写了一个任务,每个周末调用该过程。


这是我将值插入表中的过程


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_();

甚至这个任务也没有奏效。不明白我哪里做错了


白衣非少年
浏览 210回答 2
2回答

慕斯王

创建任务是不够的。下一步是恢复它,因为默认情况下任务的状态为“暂停”。在你的情况下,声明是ALTER TASK mytask_hour resume;结果:任务按您的计划运行。最重要的是,你必须记住恢复/暂停任务需要对任务的 OWNERSHIP 或 OPERATE 权限OWNERSHIP 角色具有 EXECUTE TASK 权限,可以由 ACCOUNT ADMIN 分配

白衣染霜花

创建任务后,必须执行ALTER TASK … RESUME
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript