在数据从源头到目的地的旅程中,无论是流处理作业还是批处理作业,ETL(Extract, Transform, Load)和ELT(Extract, Load, Transform)都是不可或缺的。在设计ETL作业之前,选择最优、性能高且成本效益好的工具是至关重要的。基于此,选择了AWS S3作为存储层,Snowflake作为云数据仓库,以及Apache Airflow作为数据管道编排工具。
拥有AWS账户和IAM角色访问权限,Snowflake试用/商业账户,以及Airflow本地设置/AWS MWAA。
在处理问题/用例之前,了解所处理的内容可以带来高效的结果。数据是一个简单的电子商务销售样本,存储在一个JSON文件中。该JSON包含顶级的购买相关信息,并在嵌套层包含所有与图像和缩略图相关的显示数据。将扁平化JSON,将其写入Snowflake表,并执行特征工程以转换和提取一些有意义的事实。
从Snowflake访问S3数据可以通过创建阶段来实现。创建Snowflake阶段所需的字段包括AWS访问密钥和令牌。请按照以下简要步骤创建角色,创建IAM角色和其他配置的详细说明不在本文讨论范围内。请查看AWS文档以获取更多信息。
Snowflake的云数据仓库提供了灵活且优化的功能来处理数据。该平台因其开箱即用的功能而获得了巨大的声誉和支持。ETL作业需要一个数据库、模式和表来存储信息。让创建数据库和模式,并创建表来从S3加载/复制数据。
在任何数据管道中,最佳实践是保留源数据,将其存储在表或位置中,并从保留的表中应用转换以提取洞察。下一步是创建两个Snowflake表来加载和转换数据。Snowflake提供了一个非常高效的数据类型(VARIANT)来处理任何数据。由于JSON是半结构化的,需要利用这种数据类型来加载数据。