从snowpipe到着陆区的数据加载完成后,我需要执行一系列动作,想让它自己运行。如果您在此处看到任何其他选项(如果不是任务),请提出建议。
答案 0 :(得分:0)
可以,但不能直接。您可能想查看外部函数。
Snowflake 支持 external functions,它可以调用云 API 并因此运行您能够通过支持的 API 公开的任何代码。
超链接 article 提供了创建外部函数的演练,您可以根据自己的需要进行调整:
此演练特定于 AWS,但有适用于 Azure 和 GCP 的选项
支持调用外部函数的平台 一般情况下,Snowflake 支持的任何云平台上的 Snowflake 账户都可以调用外部函数:
为确保适当的安全性而必须采取的步骤不适合此处: 但总的来说,您执行以下操作:
示例代码
CREATE OR REPLACE external function external_functions.lambda.sum(filename varchar, rowcount number)
returns variant
api_integration = aws_lambda
as '<https://xxxxxxxxxx.execute-api.eu-west-2.amazonaws.com/snowflake-external-function-stage/snowflake-sum>'
如果您决定利用外部功能:
您可以创建一个运行存储过程的任务。
这个存储过程可以从你的加载历史中读取:
SELECT
*
FROM
(
select * from table(information_schema.copy_history(table_name=>'abc.mytable', start_time=> dateadd(hours, -1, current_timestamp())))
) q
WHERE q.PIPE_NAME ilike 'mypipe'
;
并使用复制历史记录的输出来调用您的外部函数。
此 external function 可以触发您可以在云提供商上编程的任何操作。这将是一个“无服务器”选项。
如果您在本地/云虚拟机上运行。您可以编写一个在气流/cron 中运行的 Python 脚本,用于处理您的复制历史并运行下一组操作。