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