数据推送到 Snowflake 阶段时触发 Snowflake 任务

Posted

技术标签:

【中文标题】数据推送到 Snowflake 阶段时触发 Snowflake 任务【英文标题】:Trigger Snowflake task when data pushed to Snowflake stage 【发布时间】:2021-09-08 18:02:37 【问题描述】:

我有 1 个雪花内部阶段,我通过 snowsql 推送 json 文件数据。然后我将使用雪花 UI 运行一些查询。目前都是手动的,有没有办法在我把数据放到舞台上的时候触发雪花任务?

【问题讨论】:

【参考方案1】:

没有办法触发雪花任务,只能安排它。但是,您可以根据条件阻止任务按特定计划运行。目前,唯一支持的条件是 SYSTEM$STREAM_HAS_DATA:

https://docs.snowflake.com/en/sql-reference/functions/system_stream_has_data.html

在任何情况下,您都不需要任务来自动化此管道。使用流和任务超出了此流的要求。如果 Snowflake 阶段是外部的(S3、Azure Blob、GCP 存储而不是 Snowflake 内部阶段),您可以使用 Snowpipe 将新到达的文件复制到表中。

https://docs.snowflake.com/en/user-guide/data-load-snowpipe.html

【讨论】:

感谢您的评论。但是我有一个内部阶段,在这种情况下我们可以做什么? Snowflake 支持使用 Snowpipe 进行内部阶段,但不支持自动摄取。您需要运行 alter pipe mypipe refresh 来获取最新到达的文件。只要您每周至少运行一次刷新,它就会自动跟踪新文件和已经摄取的文件。你可以把它放在一个任务上,以确保它每周至少发生一次,然后你可以在加载新文件时按需执行。

以上是关于数据推送到 Snowflake 阶段时触发 Snowflake 任务的主要内容,如果未能解决你的问题,请参考以下文章

将更改推送到特定分支时不会触发多分支管道

推送到数组不会触发 vue 的反应性

Snowflake中的数据库更改检测过程

将标签推送到外部 git 不会触发 Azure Pipelines CI

tcp发送缓冲区中的数据都是由产生数据的进程给推送到ip层还是有定时任务触发?

如何避免在codemagic中从git触发构建