首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花:在预定时间之外启动任务

雪花:在预定时间之外启动任务
EN

Stack Overflow用户
提问于 2019-12-21 03:34:36
回答 2查看 405关注 0票数 1

我创建了一个任务:

代码语言:javascript
复制
CREATE OR REPLACE TASK TASK_1

    WAREHOUSE = WAREHOUSE
    SCHEDULE = 'USING CRON 30 1 * * * America/Detroit'
    AS
....

它在每天凌晨1:30运行。有没有办法按需执行此查询?例如,类似于:

代码语言:javascript
复制
TRIGGER TASK TASK_1;
EN

回答 2

Stack Overflow用户

发布于 2019-12-21 07:47:17

目前,没有办法显式地执行调度或任务依赖之外的任务。

票数 1
EN

Stack Overflow用户

发布于 2019-12-22 14:46:10

mRainey的答案是正确的。您不能在计划或任务依赖项之外安排任务。这就是操作员问题的正确答案。

不过,对于那些偶然发现这个答案的人来说,你可以让自己更容易地在不同的时间安排任务:

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE "SCHEDULE_TASK_AT_TIME"(TASK_NAME VARCHAR, HOUR float, MINUTE float)
RETURNS VARIANT
LANGUAGE JAVASCRIPT

    AS $$

    var return_rows = [];

    var task_name = TASK_NAME;
    var h = HOUR;
    var m = MINUTE;

    var default_timezone = 'America/Los_Angeles';

    var new_chron = 'USING CRON ' + m +  ' ' + h + ' * * * ' + default_timezone;

    var stmt = snowflake.createStatement({sqlText: `
        DESCRIBE TASK IDENTIFIER(:1)
    `, binds:[task_name]});
    res = stmt.execute();

    res.next();
    var old_chron = res.getColumnValue(8);

    var stmt = snowflake.createStatement({sqlText: `
        ALTER TASK IDENTIFIER(:1) SUSPEND
    `, binds:[task_name]});
    res = stmt.execute();  

    var stmt = snowflake.createStatement({sqlText: `
        ALTER TASK IDENTIFIER(:1) SET SCHEDULE = :2
    `, binds:[task_name, new_chron]});
    res = stmt.execute();   

    var stmt = snowflake.createStatement({sqlText: `
        ALTER TASK IDENTIFIER(:1) RESUME
    `, binds:[task_name]});
    res = stmt.execute();  


    return_rows.push('Old Chron: ' + old_chron);
    return_rows.push('New Chron: ' + new_chron);

    return return_rows;

    $$;

然后,您可以像这样安排您的任务,它将在下一个22:38运行:

代码语言:javascript
复制
call SCHEDULE_TASK_AT_TIME('DEMO_TASK', 22, 38);

这个过程的输出给出了旧的时间和新的时间,所以当你完成时,你可以很容易地将它设置回来。

不过一定要小心,注意它的局限性--例如,在我的版本中,你必须硬编码时区。

此外,我没有考虑是否可以设置一个chron来只执行一次,所以无论您将其设置为什么小时和分钟,它每天都会像这样运行,除非您采取进一步的行动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59430497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档