首页 > 解决方案 > 有没有一种从 Azure Blob 存储到 Snowflake EDW 的简单 ETL 方法?

问题描述

我对 Azure 上的 Snowflake 有以下 ETL 要求,并且由于时间线和技术限制,我希望实施最简单的解决方案。

要求 :

每天将 Azure Blob 存储中的 CSV 数据(仅几 MB)加载到 Snowflake Warehouse 中的临时表中。在 Snowflake 本身内转换上面加载的数据,其中转换仅限于几个连接和聚合以获得一些度量。最后,将这些数据存放在同一个 Snowflake DB 内的 Datamart 中的最终表格中。最后,使用计划或使用基于事件的触发器(即文件到达 Blob 存储区时立即启动的步骤)自动执行上述管道。

约束:

我们不能使用 Azure 数据工厂来实现这个最简单的设计。我们也不能使用 Azure Functions 来部署 Python 转换脚本并安排它们。而且,我发现使用 Snowflake SQL 进行转换是一项有限的功能,它只允许将某些内容作为 COPY INTO 命令的一部分,但不支持 JOINS 和 GROUP BY。此外,虽然以下 THREAD 表明可以调度 SQL,但这并不能满足我的转换要求。

问候, 罗伊

附上下面的想法图更清楚。 用于实现所需解决方案的设计图

https://community.snowflake.com/s/question/0D50Z00009Z3O7hSAF/how-to-schedule-jobs-from-azure-cloud-for-loading-data-from-blobscheduling-snowflake-scripts-since-dont-have-成本换 etl-tool-purchase-for-scheduling

https://docs.snowflake.com/en/user-guide/data-load-transform.html#:~:text=Snowflake%20supports%20transforming%20data%20while,columns%20during%20a%20data%20load

标签: azurestored-proceduresetlazure-data-factorysnowflake-cloud-data-platform

解决方案


您可以在 Azure blob 存储上创建雪管,一旦在 azure blob 存储之上创建了雪管,它将监控存储桶,并且一旦有新文件进入,文件就会加载到您的阶段表中。将数据复制到阶段表后,您可以使用雪花任务安排转换 SQL。

您可以在以下链接中参考用于 azure blob 存储的雪管创建步骤: Microsoft Azure blob 存储上的雪管


推荐阅读