基于雪花事件的任务计划而不是基于时间的任务计划

时间:2020-04-21 04:13:22

标签: snowflake-cloud-data-platform snowflake-task snowflake-stream

我需要基于雪花事件的任务计划而不是基于时间的任务计划的示例。 我在雪花文件中找不到这些示例。

预先感谢

2 个答案:

答案 0 :(得分:1)

可以触发任务的唯一事件源是任务树中先前任务的完成,请参阅使用“ AFTER”参数。

CREATE TASK mytask2
  WAREHOUSE = mywh
  AFTER mytask1
AS
INSERT INTO mytable2(id,name) SELECT id, name FROM mytable1;

此外,如果事件是表中记录的插入或更改,则可以在表上创建流,并使用WHEN子句阻止调度的任务运行,直到流中有数据为止。

create stream mystream on table mytable
APPEND_ONLY = TRUE; // Set to true to only capture inserts
CREATE TASK mytask1
  WAREHOUSE = mywh
  SCHEDULE = '5 minute'
WHEN
  SYSTEM$STREAM_HAS_DATA('MYSTREAM')
AS
  INSERT INTO mytable1(id,name) SELECT id, name FROM mystream WHERE METADATA$ACTION = 'INSERT';

https://docs.snowflake.com/en/sql-reference/sql/create-task.html

https://docs.snowflake.com/en/sql-reference/sql/create-stream.html

答案 1 :(得分:0)

没有可以触发任务的事件源。而是按时间表运行任务。

https://docs.snowflake.com/en/user-guide/tasks-intro.html#task-scheduling

因此暂时无法创建基于事件的任务计划。