来源:数据驱动智能
“数据是新石油”——这句话强调了我们过去十年的数据管理方法。我们致力于收集、处理和分析大量数据,以推动我们成为数据驱动型组织的进程。然而,随着 ChatGPT 的兴起,在短短 5 天内收集了超过 100 万用户,情况发生了变化。这种现象引发了有关利用机器学习 (ML) 和人工智能 (AI) 推动业务发展的新想法。当我们向人工智能驱动的组织过渡时,我们的决策不仅必须根据当前数据,还必须根据预测和预告。
不断变化的需求以及机器学习和人工智能等尖端工具的出现,需要强大的数据平台能够提供及时且可理解的数据,以支持我们不断发展的数据流程。与管理组织内的其他资源类似,我们必须构建确保高效数据交付的基础设施和流程。
在这篇文章中,我将概述构建弹性摄取和 ETL/ELT(提取、转换、加载/提取、加载、转换)流程的策略,以促进我们数据平台的无缝数据交付。
数据转换类型
ETL — 提取、转换、加载
ETL 是在本地数据平台中处理数据的最常见方法。在此场景中,ETL 工具用于从关系数据库、平面文件和 API 等源中提取数据。然后,提取的数据会即时转换并保存到数据仓库中。流行的 ETL 工具包括 Informatica PowerCenter (IPC)、Microsoft SQL Integration Services (SSIS)、SAP Data Services、Talend 和 IBM Data Stage。或者,可以使用 Python 或其他编程语言中的自定义脚本来实现数据转换。
一种常见的设置涉及拥有一个单独的 ETL 服务器,专门用于处理数据并将其加载到充当数据仓库的数据库中。这种隔离确保繁重的转换查询不会给数据仓库带来负担。

ETL 处理的另一种方法也可以利用暂存区来存储转换前提取的数据。这可以实现更高效的数据处理并支持两种方式:
为 ETL 工具目的暂存数据,以减少所需的内存和计算能力。
混合方法,使用 ETL 工具进行初始数据预处理,然后使用 SQL 查询进行进一步转换,然后将数据加载到数据仓库中的数据模型中。当 ETL 工具遇到性能问题或缺乏足够的资源时,此方法特别有用。

ETL工具

ETL工具的优点:
图形形式的数据流可视化有助于更轻松地理解该过程。
可以通过图形界面使用即用型组件快速创建简单的流程。
一种数据集成和转换工具简化了工作流程。
监控和错误处理功能增强了数据管理。
ETL工具的缺点:
使用版本控制软件时,存储在 XML 或 JSON 中的转换可能会带来挑战。
单元测试数据流的困难。
需要付出巨大的努力来弥补缺失的功能。
可扩展性有限。
潜在供应商锁定。
ELT:提取加载转换
ELT 场景通常采用由数据湖和数据仓库组成的两层架构。数据湖充当从各种来源收集数据的存储库,并以结构化、半结构化或非结构化格式存储数据。这种灵活性使得能够存储传统数据库中可能无法有效存储的数据格式。在这种方法中,数据摄取工具用于将数据从源导入到数据湖。市场上有许多摄取工具,包括开源选项、云提供商提供的工具、许可软件和按使用付费工具。
数据进入数据湖后,下一步是将其加载到数据库中。这可以使用内置加载器、自定义应用程序或云提供商提供的应用程序来实现。另一种选择是使用创建 SQL 接口的外部表来访问文件中的数据,从而可以轻松使用 SQL 从 Data Lake 查询数据。
然后,数据库引擎使用 SQL 执行数据转换以创建数据模型。在云中,可以利用 Azure Synapse、AWS Redshift、BigQuery 或 Snowflake 等大规模并行处理 (MPP) 引擎进行高效的数据转换。 Dbt 或 GCP Dataform 等现代框架也可用于管理基于 SQL 的转换。

将数据加载到数据湖的另一种方法是推送方法,其中外部源将数据直接提取到数据湖。然而,这种方法可能会导致对数据提取的控制有限,在数据丢失或损坏的情况下需要与负责数据源的团队进行协调。

ELT的优点:
分离摄取和转换过程,增强可扩展性和灵活性。
云环境中良好的可扩展性,允许垂直和水平扩展。
用 SQL 编写的转换可以轻松存储在存储库中、跟踪更改并接受代码审查技术。
可以针对不同的活动使用不同的工具,例如使用付费工具从特定来源提取数据,使用 SQL 或 Apache Spark 进行数据转换。
由于使用 SQL 或开源软件进行数据转换,供应商锁定有限。
更通用和元数据驱动的流程,支持创建通用管道以基于元数据描述进行提取。
ELT的缺点:
数据处理过程中多种工具带来的复杂性。
缺乏数据匿名化、屏蔽——数据按原样提取。
EtLT - 提取、转换、加载和转换
虽然 ELT 流程有助于将数据快速提取到数据平台,但它也存在潜在的缺点,尤其是涉及敏感信息时。从来源提取的数据可能包含未经授权的个人不得访问的机密数据,或者组织可能需要遵守 SOC 2、GDPR、CCPA 和 HIPAA 等标准。在这种情况下,有必要在将敏感数据移动到数据湖或数据仓库之前采取措施删除、屏蔽或加密敏感数据。
为了解决这些问题,我们可以实施“EtLT”流程,其中包括在将数据加载到数据平台之前的额外转换步骤。这种“轻”转换发生在提取过程中,涉及屏蔽、过滤或加密敏感信息。与连接或聚合等繁重转换不同,此步骤仅关注指定的数据源和字段,确保敏感信息受到保护,而不会引入大量处理开销。
通过将这些“轻”转换纳入提取过程,组织可以防止敏感信息存储在其数据湖或 Lakehouse 中,从而增强数据安全性和对监管标准的合规性。

流处理
流处理支持从各种来源(包括物联网设备、传感器、事件、应用程序和关系数据库)进行实时数据摄取和分析。根据数据的性质,可以通过聚合、时间窗口分析或单独的记录处理来转换传入流。这些实时数据可以存储在文件、数据库中,或用于实时报告和分析。

Lambda架构
Lambda 架构是一种多功能的数据部署模型,结合了批处理和流处理管道,可以有效处理动态数据需求。

加速层:该层使用 Apache Spark 或 Storm 等技术实时或接近实时地处理连续的数据流。该层处理的数据可在几毫秒到几秒内快速分析,从而实现实时分析和洞察。
批处理层:相反,批处理层将传入数据分成较小的批次进行处理。虽然批处理可能较慢,需要几个小时才能完成,但它在处理大型数据集和提供详细见解方面表现出色。处理后的批量数据然后存储在Service层中以供存储和查询。
CDC:变更数据捕获
更改数据捕获 (CDC) 是一种实时数据转换的创新方法,对于动态捕获和处理数据库更改特别有用。通过监视数据库事务日志,CDC 软件识别新记录或修改(例如 INSERT、UPDATE 或 DELETE 操作)并将其转换为流事件。应用程序和服务可以使用这些事件来进行进一步处理、转换并加载到数据仓库或数据湖中。这种实时数据摄取可以实现及时的数据分析,并促进与机器学习模型的集成以进行预测分析。

Lakehouse 中的数据处理过程
Lakehouse架构结合了数据湖和数据仓库的优势,为数据存储、处理和分析提供了统一的平台。在 Lakehouse 中,Apache Spark 作为数据处理和探索的主要工具,能够从各种来源提取数据并执行复杂的转换。
Lakehouse中的数据以Delta或Iceberg等文件格式存储,支持数据修改和交易,同时也实现了计算和存储的分离。这种架构确保了灵活性和可扩展性,使组织能够有效地管理大量数据。
为了向 Lakehouse 平台填充数据,组织可以使用 Apache Spark 直接提取数据,也可以利用提取工具将数据提取到 Lakehouse 的铜级区域。随后,采用Apache Spark对数据进行预处理,进行过滤、清洗、增强,并将其存储在Silver层中。最后,与传统数据仓库类似,执行数据转换以填充业务数据模型。

与数据在提取后移动到另一个系统的两层架构不同,在 Lakehouse 中,所有数据仍以文件形式存储在存储中。这种设计选择可以通过各种能够读取存储中可访问的文件格式的解决方案来无缝访问数据。此外,元数据层存储有关文件的信息,方便 Apache Spark 进行数据查询和管理。
Lakehouse 架构为组织提供了强大且多功能的解决方案来管理和分析数据,将数据湖的灵活性与数据仓库的结构化查询功能相结合。
数据加载和摄取策略
数据加载和摄取策略的有效性取决于多个因素,包括数据源类型、数据量、网络功能、源响应速度以及所使用连接器的性质。在执行从源获取数据的任务时,重要的是要考虑我们的 ETL/ELT 流程所需的时间,特别是在批处理情况下遵守数据可用性的特定要求时。
此外,确保摄取过程不会因大量查询而使源系统超载也至关重要。为了实现这种微妙的平衡,对各种连接和摄取策略进行彻底测试至关重要。在某些情况下,选择利用本机数据库工具完全转储到 CSV 可能比使用连接器有选择地提取数据更有利,特别是在处理大型数据集时。
全量加载
从源获取数据的最简单方法是从数据库或文件中的表导入所有数据。当仅选择部分数据不可行时,例如使用文件作为源或无法轻松识别更改和新记录的表时,可以使用此方法。由于这些限制,需要导入源中的所有行。根据转换的复杂性,此方法可能是将数据插入仓库表的最简单方法,因为每次都会通过覆盖目标表从头开始重新加载表。但是,在处理大量行时,资源成本可能会很高。
增量加载
对于可以识别新行且数据不可变的系统(例如会计系统、事务系统和日志),可以使用返回数据仓库中尚未存在的行的查询从源中仅提取新记录。为了维持这个过程,需要存储一个“ware mark”,例如最后导入记录的最大ID。这样,通过插入或追加操作,仅将新记录添加到数据仓库表中,从而使过程高效且快速。
Delta加载
增量加载是当源表包含指示记录修改以及相应时间戳的元数据时采用的数据摄取策略。这种情况经常出现在客户关系管理 (CRM) 应用程序中存储客户信息的表中。当 CRM 数据发生更改时,反映这些修改的元数据列也会相应更新。利用此元数据,可以将查询发送到源系统,以有选择地提取自上次提取以来修改的记录。
维护此过程需要存储有关先前提取的信息(例如时间戳或记录标识符),以准确识别和提取增量更改。然而,从数据仓库的角度来看,增量加载通常会产生更高的成本。这主要是由于需要更新操作,更新操作可能需要大量计算,并且可能需要额外的资源,例如查找用于更新的修改记录、重建某些数据库体系结构中的表或索引,或者修改增量格式的文件。
为了有效地实现增量加载,通常使用合并、更新和插入命令。虽然增量加载更耗费资源,但它为处理大型表提供了一种可行的解决方案,其中优化数据的报废和加载对于保持效率至关重要。通过有选择地仅摄取修改的记录,增量加载最大限度地减少了冗余数据传输,并确保仅将相关更新合并到数据仓库中,从而节省数据处理管道中的时间和资源。
转换类型
数据清理
数据清理是检测和纠正原始数据中的错误、不一致和不准确的过程。这包括识别和删除重复记录、更正拼写错误和拼写错误、标准化格式以及填写缺失值。这是我们用来准备原始数据以供使用的常见转换过程。从源中提取数据后,我们可能会面临许多不同的数据问题。通常,对提取的数据进行分析可以洞察应该更新、替换或过滤哪些内容,以提高机器学习和分析目的数据的质量和可用性。
数据标准化
数据规范化是数据库设计中的一项技术,旨在构建数据以最大限度地减少冗余并提高数据完整性。通过将数据库分解为多个表并在它们之间建立关系,规范化可确保每个实体都唯一存储,从而减少重复和数据不一致。例如,在从包含客户信息和交易的源系统接收的 JSON 文件中,规范化涉及为客户、交易和产品创建单独的表。如果没有标准化,对产品名称的修改将需要对每个相关订单进行更改,从而引入潜在的错误和不一致。
聚合
聚合代表了一个变革过程,其中数据被整合以满足所需的粒度级别。在处理不需要详细数据的大量数据集时,聚合特别有用,它可以提高性能并标准化数据粒度。实现数据聚合可以显着提高各种场景下的分析查询效率。
编排
编排在 ETL/ELT 流程中发挥着关键作用,特别是在 ELT 环境中,必须管理不同工具中步骤之间的依赖关系。例如,使用 Python 脚本进行数据摄取和 SQL 过程进行转换需要一个能够准确排序这些步骤的编排器。编排器必须触发摄取过程并等待其完成,然后才能以正确的顺序开始数据转换步骤。此外,它应该包含调度和重试机制等基本功能。
幸运的是,市场上有大量的编排工具,包括云供应商提供的工具,可以提供各种工具的无缝集成。然而,当尝试将非本机工具与云的本机编排环境集成时,可能会出现挑战。
除了管理编排之外,这些工具通常还提供强大的日志记录、流程监控和警报功能,这些功能在复杂的数据生态系统中是不可或缺的。这样可以快速识别 ETL/ELT 流程中的错误,并有助于在必要时及时重新启动流程。
编排工具可以分为以下几种类型:
基于 GUI 的拖放预定义活动:这些工具支持使用图形用户界面以及数据复制、查找和 SQL 命令等预定义活动来定义管道。
基于 Python 的框架:此类别中的框架为数据导入、shell 命令和数据导出等活动提供即用型 Operator。还可以为特定活动编写自定义代码。
基于 YAML 的工作流:工作流是使用 YAML 定义来定义的,利用预定义的活动进行编排。
此外,编排解决方案可能是基于服务器的或无服务器的,具有不同的定价模型。例如,Azure 数据工厂根据执行时间收费,GCP 工作流程根据执行次数收费,GCP Composer 根据计算和服务可用性时间收费。开源编排器可以安装在虚拟机上,尽管这需要维护和修补责任。或者,第三方提供商提供无服务器编排器,例如 Prefect。
选择最合适的编排器需要考虑定价、数据量、集成能力、灵活性和可移植性等因素。在许多情况下,选择云原生编排器可能就足够了,因为它与云服务无缝集成并简化了管理。
数据质量
数据质量是数据处理中不可或缺的一个方面,确保传输到数据平台的数据的可靠性和准确性。无论是生成报告还是训练机器学习模型,确保数据的完整性都是至关重要的。数据丢失、损坏或重复可能会影响运营效率并带来重大风险,特别是在向监管机构报告措施时。为了应对这些挑战,可以将各种数据质量检查集成到数据湖、数据仓库或数据湖房内的 ETL/ELT 流程中:
数据验证:使用自定义脚本或框架,可以建立验证规则来验证传入数据的完整性。这些规则评估数据的格式是否正确,确保列不为空,验证数值的长度,或确认数值为非负数。通过在转换的不同阶段进行此类测试,可以在粒度级别上提高数据质量。
数据分析:利用数据分析方法,收集有关已处理源的一般统计信息,包括行数、平均值、总和、标准差等。分析这些信息可以识别特定来源中丢失或损坏的数据,从而促进主动的数据质量管理。
数据协调:将数据转换为所需的数据模型后,可以实施数据协调流程以确保一致性和准确性。通过比较聚合值,例如源系统和数据平台之间客户帐户中的资金总额,可以识别潜在的差异,从而确认数据的保真度。
此外,可以利用机器学习算法(例如聚类)来增强数据质量。通过利用聚类技术,可以在数据集中识别潜在的异常值(表明数据质量问题)。将此类技术集成到数据处理管道中提供了一种检测和解决潜在数据质量问题的替代方法。

从本质上讲,强大的数据质量实践对于维护组织内数据的可靠性和完整性至关重要。通过实施验证、分析、协调和集群等先进技术的组合,企业可以增强数据质量保证流程并降低与错误或不完整数据相关的风险。
主数据管理
在当今的商业环境中,有效的数据管理至关重要,而主数据管理 (MDM) 则成为应对数据治理复杂性的指导原则。
MDM 的核心是作为存储主数据的集中存储库,重点关注两个基本概念:黄金记录和参考数据。
黄金记录:这些记录体现了数据的准确性和一致性,是客户详细信息或产品规格等关键信息的最终真实来源。在多个源系统收集客户数据的场景中,经常会出现不一致的情况。为了应对这一挑战,组织指定具有最高数据质量的“黄金源”系统,或采用机制在 MDM 框架内统一数据。
参考数据:参考数据提供了必要的背景和清晰度,提供了对数据生态系统内的层次结构、分类和关系的见解。参考数据通常由业务用户提供,丰富了从源系统导入的数据,有助于分析目的和明智的决策。
MDM 使组织能够通过提高数据质量并使用重要业务信息丰富数据来充分利用其数据资产。通过协调数据生态系统并在整个组织中提供统一的数据视图,MDM 有助于做出明智的决策并推动业务成功。
小结
在高级分析、商业智能、人工智能和机器学习领域,数据交付的重要性怎么强调都不为过。这不仅仅是建立一条管道;精心设计的流程包含一系列关键步骤,从数据提取和转换到数据治理和质量保证。无论是启动新的实施还是增强现有的数据平台,都必须注意本文中概述的步骤和技术。通过优先考虑有效的数据交付策略,组织可以确保高质量数据的无缝流动,以支持其分析工作并推动明智的决策过程。