什么是ETL?提取、转换、加载的解释

什么是ETL?

无抓取抓取浏览器可以为ETL工作流程的提取阶段提供呈现的公共网页数据。

简要说明

  • ETL意味着提取、转换和加载。 数据从来源收集,根据定义的规则重塑,并写入目标。
  • 转换发生在主要负载之前。 当目标需要接收符合受控模式的策划数据时,ETL是有用的。
  • ETL是一种管道模式,而不是整个平台。 调度、源流、质量监控、权限和服务仍然是独立的设计问题。
  • 增量ETL需要稳定的变化语义。 键、时间戳、删除处理和检查点决定更新是否完整且可重复。
  • 网络输入需要来源和漂移控制。 工作流程必须将获取变化与基础事实中的真实变化分开。

ETL是一个数据集成过程,从源系统提取数据,将其转换为达成的格式,并将结果加载到目标系统中。目标通常是分析仓库,但ETL也可以提供给关系数据库、搜索索引、报告存储、模型特征集或操作应用程序。

AWS的ETL概述 围绕组合源数据和应用商业规则来界定过程,分析前的顺序是定义特征:主要目标接收转换的输出,而不是作为原始数据的第一个落点。

提取:使用上下文捕获源数据

提取从数据库、文件、API、事件系统、应用程序、文档或网页读取数据。可靠的提取不仅仅是复制值。它记录源身份、捕获时间、选择规则、权限和用于检测新数据或已更改数据的边界。这些细节决定后续运行是否能够解释为什么某个记录存在。

完整提取读取整个选定的数据集。增量提取读取自检查点以来的更改,使用时间戳、序列号、变更日志、版本字段或源特定光标。增量工作减少负载和延迟,但需要明确的规则来处理延迟更新、删除、时钟差异和检查点推进。光标应在对应的输出安全提交时移动。

对于公共网页来源,提取的工件可能是初始HTML、呈现的DOM、网络响应或从页面解析出的结构化对象。ETL作业应保留它捕获的表示形式。否则,客户端呈现的变化可能看起来像是业务数据的变化,即使源记录保持不变。

转换:应用数据合同

转换将源特定数据转换为目标所期望的模式和含义。常见操作包括类型转换、单位转换、字段重命名、标准化、去重、验证、掩蔽、过滤、连接、聚合和增强。每条规则应是确定性的、版本化的,并能够对代表性输入进行测试。

转换也是语义错误变得昂贵的地方。将文本值转换为数字很简单;决定税是否包含、时间戳是否表示事件时间或更新时间,或者两个标识符是否指代同一实体需要领域知识。转换规范应明确命名这些决定,而不是将其隐藏在代码中。

被拒绝的数据需要一个受控路径。违反必需字段或约束的记录应附上原因和来源参考而被隔离。默默丢弃它们会产生外观整洁但有解释空白的表格。强制每个值会产生外观完整但含义不明确的表格。

加载:安全发布数据

加载将转换的数据写入目标。追加加载添加新行。插入更新加载根据稳定键插入新记录并更新现有记录。替换加载发布完整快照。缓慢变化维度模式保留选定历史。正确的方法取决于消费者如何解释更新以及历史状态是否重要。

加载应避免暴露未完成的结果。暂存表、事务交换、版本化分区或原子清单可以让消费者在新数据通过检查之前,继续使用之前完整的数据集。作业应协调输入、转换、被拒绝和加载的计数,并在发布前验证键的唯一性和必需的分区。

微软的ETL指南 区分管道步骤和目标考虑。可转移的教训是,加载是一个发布边界:数据变成一个具有消费者、保留规则、访问控制和服务期望的产品。

ETL流程一览

阶段主要问题典型控制
提取作业是否捕获了预期的源状态?光标、快照身份、源计数、来源。
转换每个输出是否符合达成的模式和意义?规则版本、测试、隔离原因、协调。
加载消费者能否看到一个完整有效的发布?暂存、原子发布、键、分区、访问策略。
操作所有者能否检测并解释不良或延迟的结果?源流、新鲜度、警报、运行日志、所有权。

ETL与通用数据管道

ETL指定处理顺序。通用数据管道涵盖更广泛的流程:工作如何开始,数据如何移动,临时状态的存放位置,质量的定义,依赖关系的协调以及如何为下游消费者提供服务。每个生产ETL作业都是管道的一部分,但并非每个管道在加载之前都进行转换。

这种区分帮助团队避免购买或构建“ETL工具”,并假设所有权、安全性、数据源、成本控制和语义定义现在自动存在。技术可以执行步骤;组织仍然需要定义数据产品及其操作协议。

批处理、微批处理和流式ETL

传统ETL通常是批量导向的:提取、转换和按计划发布一个有限的集合。微批处理缩短了时间间隔,同时保持运行边界。流式ETL将转换应用于持续事件,必须考虑事件时间、状态、重复和延迟到达。标签的重要性不如服务目标和正确性模型。

谷歌云的ETL解释 在相同的更广泛类别中讨论批处理和流式ETL。设计应该选择满足消费者需求的最简单的时间模型。持续处理增加了操作工作,并可能使重放变得复杂,因此应该遵循实际延迟要求。

ETL质量和可观察性

质量检查应涵盖模式、完整性、有效性、唯一性、一致性、时效性和分布。行计数可能揭示缺少的分区,但无法证明标识符是唯一的或金额使用正确的货币。测试应与消费者合同相关联,并应识别哪些记录失败。

可观察性将症状与运行、代码版本、源快照、转换规则和目标发布连接起来。有用的信号包括提取延迟、字段变更率、拒绝原因、源到目标的对账、加载持续时间、目标时效性和下游事件。警报应指向某个所有者和一个行动,而不是重复每个低级日志事件。

常见的ETL失败模式

  • 不稳定的增量键。 时间戳或游标错过更新、提前推进或无法表示删除。
  • 静默模式强制。 意外值被转换为null或文本,而没有可观察的合同违反。
  • 重复加载。 重复的输入创建额外的业务行,因为目标缺乏稳定的键和幂等写入。
  • 部分发布。 消费者在只有某些分区或实体被替换时查询一个表。
  • 隐藏的业务逻辑。 关键含义存在于无法被领域所有者审查的未记录表达式中。
  • 没有原始证据。 一个已更正的转换无法重放,因为原始源文件和捕获上下文被丢弃。

公共Web数据的ETL

基于Web的ETL以合法、范围明确的获取计划开始。提取阶段仅捕获出于声明目的所需的公共字段,并记录URL、时间、地区和表示。转换阶段解析记录、规范化单位、验证标识符,并将缺失值与提取失败分开。加载阶段发布具有来源的稳定模式。

页面模板独立于其显示的事实而变化。将获取和解析版本分开,保留原始页面的样本,并监控缺失记录容器或字段覆盖突然变化等结构信号。这些控制措施在覆盖受信数据集之前识别出破损的提取器。

Scrapeless Scraping Browser 可以在需要JavaScript时向提取阶段提供已渲染的页面状态。ETL所有者仍然负责选择器、转换、数据最小化、验证和允许的下游使用。包括 Scrapeless定价 在每个计划刷新成本模型中。

ETL设计检查表

  1. 定义消费者、决策、输出模式、时效性目标和所有者。
  2. 记录源权限、选择、变更语义、标识符和预期数量。
  3. 选择完整或增量提取,并测试更新、删除和延迟记录。
  4. 版本转换规则并为无效记录提供隔离原因。
  5. 故意选择附加、插入、快照或保留历史的加载行为。
  6. 原子发布并对源、已转换、被拒绝和已加载状态进行对账。
  7. 保留数据来源和原始证据足够久以进行审核和重新处理。
  8. 测试模式漂移、重复输入、部分源和目标约束。

结论

ETL是将源数据转换为策划目标产品的提取-转换-加载顺序。强大的ETL以可追溯的获取开始,应用版本化的语义规则,发布完整的输出,并记录足够的证据以解释每个结果。对于网络输入,已渲染的状态和模板漂移成为一流的源关注,而不是隐藏在解析器内部的问题。

准备构建Web ETL工作流吗?

使用Scrapeless Scraping Browser获取动态公共页面,然后根据您自己的数据合同进行转换和加载。

免费开始→

常见问题

ETL代表什么?

ETL代表提取、转换和加载。该过程读取源数据,将其转换为商定的模式和含义,并将策划的结果写入目标系统。

ETL 的一个例子是什么?

一个零售商可能会提取公共产品页面,规范化标识符、价格、货币和可用性,验证必填字段,然后将整理过的记录加载到分析仓库中。工作流程应保留源 URL 并捕捉上下文。

ETL 是否仅用于数据仓库?

不。仓库是常见的 ETL 目标,但整理过的数据也可以加载到数据库、搜索索引、特征存储、报告系统或操作应用程序中。

ETL 如何与 ELT 不同?

ETL 在主要目标加载之前转换数据,而 ELT 将源数据加载到目标平台并在那里进行转换。选择会改变原始数据的位置、计算运行的位置以及治理的执行方式。

ETL 能处理流数据吗?

是的。流式 ETL 对持续事件流应用转换,但它需要对事件时间、状态、重复和迟到到达进行明确处理。当延迟目标允许时,批处理或微批处理更简单。

ETL 中应该监控什么?

监控源的新鲜度、提取覆盖范围、架构变化、拒绝原因、重复率、对账计数、加载完整性、目标的新鲜度、成本和下游事件。每个信号应有明确的负责人。

参考文献