ETL 流程17 Mar 2025 | 5 分钟阅读 ETL 代表提取(Extraction)、转换(Transformation)和加载(Loading)。 ETL 是一个过程,用于提取数据、转换数据并将数据加载到最终源。 ETL 遵循将数据从源系统加载到数据仓库的过程。 ![]() 执行 ETL 过程的步骤如下: 提取提取是第一个过程,其中从不同的来源(例如文本文件、XML 文件、Excel 文件或各种其他来源)收集数据。 转换转换是 ETL 过程的第二步,其中所有收集的数据都被转换为相同的格式。 该格式可以是根据我们需要的任何格式。 在此步骤中,将一组规则或函数应用于提取的数据,以将其转换为单一标准格式。 它可能涉及以下任务:
加载加载是 ETL 过程的最后一步。 从各种来源收集大量数据,转换它们,最后加载到数据仓库中。 ETL 是一个从不同源系统提取数据、转换数据并将数据加载到数据仓库的过程。 ETL 过程需要开发人员、分析师、测试人员和高层管理人员等各个利益相关者的积极投入。 ETL(提取、转换和加载)是一个自动化过程,用于从原始数据中提取分析所需的信息,将其转换为可以满足业务需求的格式,并将其加载到数据仓库中。 ETL 通常会汇总数据以减小其大小并提高特定类型分析的性能。 ETL 过程使用流水线概念。 在此概念中,一旦提取了数据,就可以对其进行转换,并且在转换期间可以获得新的数据。 并且当修改后的数据被加载到数据仓库中时,可以转换已提取的数据。 ![]() 当我们构建 ETL 基础设施时,我们必须集成数据源,仔细规划和测试,以确保我们正确转换源数据。 在这里,我们解释了构建 ETL 基础设施的三种方法,以及一种无需使用 ETL 构建数据管道的方法。 1) 构建具有批量处理的 ETL 管道以下是构建传统 ETL 流程的过程,在该流程中,我们以批处理方式将数据从源数据库传输和处理到数据仓库。 开发企业 ETL 管道具有挑战性; 我们通常依赖于 ETL 工具,例如 Stitch 和 Blendo,它们可以简化和自动化该过程。 使用批处理构建 ETL,以下是 ETL 最佳实践。 1) 参考数据: 在这里,我们将创建一组定义允许值集合的数据,并且可能包含数据。 示例: 在国家/地区数据字段中,我们可以定义允许的国家/地区代码。 2) 从数据参考中提取: ETL 步骤的成功在于正确提取数据。 大多数 ETL 系统都将来自多个源系统的数据组合在一起,每个系统都有自己的数据组织和格式,包括关系数据库、非关系数据库、XML、JSON、CSV 文件,并且在成功提取后,数据被转换为单一格式以标准化格式。 3) 数据验证: 一个自动化过程确认从源中提取的数据是否具有期望的值。 例如,在过去一年的财务交易数据库中,数据字段应包含过去 12 个月内的有效日期。 如果验证引擎未能通过验证规则,则会拒绝该数据。 我们定期分析被拒绝的记录,以确定出了什么问题。 在这里,我们更正源数据或修改提取的数据,以解决下一批次中的问题。 4) 转换数据: 删除无关或错误的数据,应用业务规则,检查数据完整性(确保数据没有在源中损坏或被 ETL 损坏,并且没有数据在之前的阶段中被删除),并根据需要创建聚合。 如果我们分析收入,我们可以将发票的美元金额汇总为每日或每月总额。 我们需要编程和测试一系列规则或函数,这些规则或函数可以实现所需的转换并在提取的数据上运行它们。 5) 暂存: 我们通常不会将转换后的数据直接加载到目标数据仓库中。 数据应首先输入到暂存数据库中,以便在出现问题时更轻松地回滚。 此时,我们还可以生成用于法规遵从性的审计报告,或诊断和修复数据问题。 6) 发布到数据仓库: 将数据加载到目标表中。 一些数据仓库每次都会覆盖现有信息,ETL 管道每天、每月或每周都会加载一批新数据。 换句话说,ETL 可以添加新数据而不覆盖,并带有时间戳,表明它是唯一的。 我们必须小心地执行此操作,以防止数据仓库因磁盘空间和性能限制而“爆发”。 2) 构建具有流处理的 ETL 管道现代数据处理通常包括实时数据。 例如,来自大型电子商务网站的网络分析数据。 在这些用例中,我们无法以大批量提取和转换数据,因此需要对数据流执行 ETL,这意味着当客户端应用程序将数据写入数据源时,应立即处理、转换数据并将其保存到目标数据存储中。 目前有许多流处理工具可用,包括 Apache Samza、Apache Store 和 Apache Kafka。 ![]() 构建基于 Kafka 的流式 ETL 涉及以下几点 1) 将数据提取到 Kafka 中: JDBC 连接器提取源表的每一行。 当客户端应用程序向表中添加行时,Kafka 会自动将其作为新消息写入 Kafka 主题,从而启用实时数据流。 2) 从 Kafka 中提取数据: ETL 应用程序从 Kafka 主题中提取消息作为 Avro 记录,这会创建一个 Avro 模式文件并将其反序列化,并从消息中创建 KStream 对象。 3) 在 KStream 对象中转换数据: 使用 Kafka Streams API,流处理器一次接收一条记录,对其进行处理,并且可以从下游处理器生成一条或多条输出记录。 这些可以一次转换一条消息、根据条件对其进行过滤或对多条消息执行数据操作。 4) 将数据加载到其他系统: ETL 应用程序仍然持有数据,现在需要将其流式传输到目标系统,例如数据仓库或数据湖。 他们的目的是使用 S3 sink 连接器将数据流式传输到 Amazon S3。 我们可以实现与其他系统的集成。 例如:使用Amazon Kinesis将数据流式传输到 Redshift 数据仓库。 下一主题ETL 面试题 |
我们请求您订阅我们的新闻通讯以获取最新更新。