【发布时间】:2022-06-15 01:57:28
【问题描述】:
我想知道是否有办法在一系列任务完成后运行任务。据我了解,雪花只支持 1 个前置任务,而不是很多。我的情况是,在所有维度完成后,我必须加载一个事实表。我'
【问题讨论】:
-
HI 一种方法是编写一个任务,该任务将调用所有一个过程,该过程将一一调用所有其他过程。
标签: snowflake-cloud-data-platform
我想知道是否有办法在一系列任务完成后运行任务。据我了解,雪花只支持 1 个前置任务,而不是很多。我的情况是,在所有维度完成后,我必须加载一个事实表。我'
【问题讨论】:
标签: snowflake-cloud-data-platform
可以为一个任务定义多个前置任务。
来源:https://docs.snowflake.com/en/_images/data-pipeline-tasks-dag-example-basic.png
根任务 (A) 按计划运行,例如“每 5 分钟”或“每天早上 5 点和下午 5 点”。当任务 A 运行完成时,任务 B 和 C 同时运行。任务 D 仅在任务 B 和 C 都完成运行时运行。
DAG 支持使用任务树不可能或难以实现的并行处理工作流,包括:
在为仪表板聚合事实之前同时更新一组维度表。
在之前的所有任务都运行完成后,使用外部函数通过远程消息服务提示通知。
示例场景:
CREATE DATABASE TEST;
CREATE SCHEMA TEST;
CREATE OR REPLACE TASK task SCHEDULE = '10 minute'AS SELECT system$wait(20);
CREATE OR REPLACE TASK task2 AFTER task1 AS SELECT system$wait(20);
CREATE OR REPLACE TASK task3 AFTER task1 AS SELECT system$wait(20);
CREATE OR REPLACE TASK task4 AFTER task3 AS SELECT system$wait(50);
-- adding second predecessor, with ALTER statement
ALTER TASK task4 ADD AFTER task2;
检查元数据:
SELECT t.*
FROM TABLE(INFORMATION_SCHEMA.TASK_DEPENDENTS(
TASK_NAME => 'task1', RECURSIVE => TRUE )) t;
输出:
【讨论】: