数据转换过程可以分为六个步骤:提取extraction和加载loading、探索exploration、转换transformation、测试testing、文档documentation和部署deployment。
数据转换是获取原始数据并从中获取意义的过程;它构成了所有分析工作的基础,并代表了数据从业者如何从他们的公司创造有形的价值。
数据转换过程通常可以分解为六个常规定义的步骤:提取和加载、探索、转换、测试、文档和部署。执行这些步骤后,原始数据将采用一种有意义的新形式,为公司的商业智能工作提供支持。
我们将使用此页面来描述典型ELT 工作流的数据转换过程。
如果您的团队遵循 ELT 工作流,其中在转换数据之前提取原始数据源并将其加载到数据仓库中,则需要在开始转换工作之前实际完成这些提取和加载步骤!
在提取过程中,从与您的业务相关的多个数据源中提取数据。提取的数据大部分是团队最终希望用于分析工作的数据。数据源的一些示例可以包括:后端应用程序数据库、营销平台、电子邮件和销售 CRM 等。
这些数据通常是通过自定义脚本与应用程序编程接口(API)交互,或者依靠使用开源或软件即服务(SaaS)ETL工具来消除一些技术提升,从而从其系统中提取的。
在加载阶段,提取的数据将加载到目标数据仓库中。现代数据仓库的一些示例包括Snowflake,Amazon Redshift和Google BigQuery。其他数据存储平台的例子包括数据湖,如Databricks的数据湖。大多数从数据源中提取数据的 SaaS 应用程序也会将其加载到目标数据仓库中。自定义或内部提取和加载过程通常需要强大的数据工程和技术技能。
原始数据进入数据仓库后,就该了解这些数据的外观了。在此阶段,您会发现自己:
查看可用的 ERD(实体关系图)和连接键,以了解数据如何将自身连接在一起
确定哪些列可能缺少值或具有误导性列名称
编写即席查询以对数据执行一些简单的分析或汇总统计信息 - 有多少行?主键是唯一的吗?有主键吗?
了解不同数据源的货币、时区和数据类型有何不同
如何探索原始数据没有完美的方法;执行数据源需要的操作。如果您对原始数据的准确性和完整性有很高的信心,那么与质疑数据的完整性相比,此步骤可能会变得不那么费力(如果您是数据从业者,这可能是您的自然倾向😉)。
在实际的转换步骤中,已加载到数据仓库中的原始数据,您熟悉该数据的结构,并且您有一个关于如何处理它的大致计划 - 它终于准备好开始您的建模过程了!当您在数据探索阶段首次查看此数据时,您可能已经注意到了一些有关它的事情......
列名称可能清晰,也可能不清晰
表未联接到其他表
时间戳可能采用不正确的报告时区
JSON资源丰富,可能需要解嵌套
表可能缺少主键
...因此需要转型!在实际转换过程中,数据源中的数据通常是:
轻度转换:正确转换字段、统一时间戳字段的时区、适当重命名表和字段等。在 dbt 中,这通常发生在用于为数据创建干净、统一的石板的暂存模型中。
大量转换:添加业务逻辑,建立适当的具体化,将数据连接在一起,创建聚合和指标等。在 dbt 中,这通常发生在中间模型和市场模型中,创建最终向最终用户和商业智能 (BI) 工具公开的表。
转换数据的常见方法包括利用 dbt 等现代技术使用 SQL 和 Python 编写模块化和版本控制的转换。其他解决方案包括编写自定义 SQL 和 Python 脚本,这些脚本由某种类型的调度程序自动执行或利用存储过程。
您的数据现在已建模,感觉大致正确,但如何确认转换后数据的质量?您如何确保向下游用户公开的关键指标和数据值得信赖和可靠?
在此阶段,应执行符合组织标准的数据测试。这可能看起来像:
测试主键的唯一性和非空性
确保列值在预期范围内
检查模型关系阵容
等等。
使用 dbt 等产品(您可以在其中定义基于代码的测试以针对数据转换运行),您可以创建一个系统,在该系统中,您可以根据您建立的标准轻松且定期地测试转换。
您的数据将转换为有意义的业务实体,根据您的标准进行测试,并向最终用户公开。您期望那些没有直接参与转型过程的人如何浏览它们?您正在创建哪些文档来阐明转换中的业务逻辑并描述核心指标和列?
在这个阶段,转型已经完成,但在某种程度上,工作才刚刚开始。为了使数据转换对最终用户有意义且有影响力,创建和维护可靠的文档非常重要。
我们建议您在转换过程中首先记录以下内容:
转换或数据模型的主要用途 - 创建此转换的主要原因是什么?它为您的 BI 工具提供了哪些重要的报告支持?
在其中实现了业务逻辑或列名称不明确的键列
聚合和指标
数据转换过程的文档通常应该以未参与原始过程的人员可以理解的方式编写,而不是专注于如何为更多技术用户进行转换。精心编写的转换文档欢迎业务用户参与分析工作,并且是确保您的最终用户感到舒适并有权使用团队努力构建的数据的基本方法。
您的数据转换已创建、测试和记录,现在是时候将它们推向世界了。在此阶段,数据工程师、数据分析师或分析工程师会将这些转换推向生产环境,即在数据仓库的生产环境中运行它们的过程。这些生产就绪表是分析师将查询进行分析的内容,也是 BI 工具将读取的内容。
需要使用某种类型的计划程序或业务流程协调程序,以满足业务需求的节奏刷新或更新这些数据转换。使用 dbt Cloud 等产品,您可以在协作集成开发环境 (IDE) 中创建数据转换和测试,然后使用 dbt Cloud 作业计划程序定期运行它们。通常需要更多技术提升的其他解决方案包括依赖自定义 cron 计划程序或外部业务流程协调程序。
构建基础数据转换后,您的重点可能会转移到优化、治理和民主化工作上;对于所需的每个新数据源、业务问题或实体,总会有更多的数据转换工作需要完成。因此,一个好的数据转换过程既严格又灵活 - 该过程允许足够的护栏,使分析工作有价值和有条理,有足够的空间来有趣、具有挑战性和针对您的业务进行定制。