snowflake-cloud-data-platform - 雪花:在预定时间之外启动任务
问题描述
我创建了一个任务:
CREATE OR REPLACE TASK TASK_1
WAREHOUSE = WAREHOUSE
SCHEDULE = 'USING CRON 30 1 * * * America/Detroit'
AS
....
每天凌晨 1:30 运行。有没有办法按需执行这个查询?即类似的东西:
TRIGGER TASK TASK_1;
解决方案
mRainey 的回答是正确的。您不能在计划或任务依赖项之外计划任务。这是对OP问题的正确答案。
对于偶然发现此答案的其他人,您可以让自己更轻松地在不同时间安排任务:
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 运行:
call SCHEDULE_TASK_AT_TIME('DEMO_TASK', 22, 38);
此过程的输出为您提供旧的 chron 时间和新的 chron 时间,因此您可以在完成后轻松将其设置回来。
请务必小心谨慎并注意其局限性——例如,在我的版本中,您必须对时区进行硬编码。
另外,我没有考虑是否可以设置一个计时码表只执行一次,所以无论你设置什么小时和分钟,它都会像这样每天运行,除非你采取进一步的行动。
推荐阅读
- javascript - Active Directory 使用错误凭据进行身份验证
- swift - Why does `infix operator $` produce contradictory error messages in Swift?
- python - 我可以将 lambda 函数应用于特定行的 df 列吗?
- ios - How do I download this image from this URL using URLSession?
- c# - Updates a single work item Azure Devops using Asp.net
- r - How can I merge two dataframes equivalently to VLookup criteria?
- node.js - 使用 Jest 中的类搜索实体时出现 TypeORM RepositoryNotFoundError
- postgresql - 在 eloquent / Laravel 更新期间发现意外数据
- wordpress - 没有定义模板 wordpress masterstudy
- javascript - react js匹配具有相似数据的行