基于雪花事件的任务调度而不是基于时间的任务调度
Snowflake event based TASK Scheduling instead of Time Based task scheduling
我需要基于 Snowflake 事件的任务计划而不是基于时间的任务计划的示例。
我在 snowflake 文档中找不到这些示例。
提前致谢
没有可以触发任务的事件源;相反,任务按 计划运行。
https://docs.snowflake.com/en/user-guide/tasks-intro.html#task-scheduling
所以暂时无法创建基于事件的任务调度。
唯一可以触发任务的事件源是任务树中先前任务的完成,请参阅使用“AFTER”参数。
CREATE TASK mytask2
WAREHOUSE = mywh
AFTER mytask1
AS
INSERT INTO mytable2(id,name) SELECT id, name FROM mytable1;
此外,如果事件是插入或更改 table 中的记录,您可以在 table 上创建流并使用 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
我需要基于 Snowflake 事件的任务计划而不是基于时间的任务计划的示例。 我在 snowflake 文档中找不到这些示例。
提前致谢
没有可以触发任务的事件源;相反,任务按 计划运行。
https://docs.snowflake.com/en/user-guide/tasks-intro.html#task-scheduling
所以暂时无法创建基于事件的任务调度。
唯一可以触发任务的事件源是任务树中先前任务的完成,请参阅使用“AFTER”参数。
CREATE TASK mytask2
WAREHOUSE = mywh
AFTER mytask1
AS
INSERT INTO mytable2(id,name) SELECT id, name FROM mytable1;
此外,如果事件是插入或更改 table 中的记录,您可以在 table 上创建流并使用 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