数据推送到 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 任务的主要内容,如果未能解决你的问题,请参考以下文章
将标签推送到外部 git 不会触发 Azure Pipelines CI