我创建了两个任务,每天运行一次。
create or replace task TESTDB.TESTSCHEMA.TASK_EXTERNAL_REFRESH
warehouse=W_TEST_DEVELOPER
schedule='USING CRON 0 4 * * * UTC'
TIMESTAMP_INPUT_FORMAT='YYYY-MM-DD HH24'
as
call TESTDB.TESTSCHEMA.TEST_EXTERNAL_TABLE_REFRESH();
create or replace task ESTDB.TESTSCHEMA.TASK_LOAD_TABLES
warehouse=W_TEST_DEVELOPER
schedule='USING CRON 0 5 * * * UTC'
TIMESTAMP_INPUT_FORMAT='YYYY-MM-DD HH24'
as
call TESTDB.TESTSCHEMA.TEST_LOAD_TABLES();现在,我想确保TESTDB.TESTSCHEMA.TASK_EXTERNAL_REFRESH在TASK_LOAD_TABLES运行之前运行。
我该怎么做?另外,是否应该在配置表中捕获任务运行中的错误详细信息?什么是"TESTDB.TESTSCHEMA.TASK_EXTERNAL_REFRESH“失败?如果失败,下一个不应该运行。
发布于 2022-09-10 07:28:34
应增加优先规则而不是时间表:
ALTER TASK TESTDB.TESTSCHEMA.TASK_LOAD_TABLES
ADD AFTER TESTDB.TESTSCHEMA.TASK_EXTERNAL_REFRESH;在弦乐之后. 指定当前任务的一个或多个前置任务。使用此选项可创建任务的DAG或将此任务添加到现有的DAG中。DAG是一系列任务,从预定的根任务开始,并通过依赖项链接在一起。。
发布于 2022-09-10 17:21:56
对于对前面任务和后续任务的查询,应使用“后置任务名称”选项。
create task task2
after task1
as
insert into t1(ts) values(current_timestamp);https://docs.snowflake.com/en/sql-reference/sql/create-task.html#single-sql-statement
下面给出了一些选项,用于检查任务的状态并决定后续/子任务的执行。
可以使用SUSPEND_TASK_AFTER_FAILURES = number
创建一个任务,该任务调用一个UDF来检查ACCOUNT_USAGE.TASK_HISTORY or INFORMATION_SCHEMA.TASK_HISTORY views的任务状态。
您可以使用外部工具检查任务的状态并对其进行集成。
https://stackoverflow.com/questions/73670021
复制相似问题