企业级CDP数据工程实践:建设中的最佳实践

2023-10-31 14:59

本文主要是介绍企业级CDP数据工程实践:建设中的最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,许久未见,我是云祁~

今天想和大家分享下 企业级CDP项目 建设中的数据工程实践。

在很多情况下,大家可能会将数据工程与ETL的过程画上等号,但实际上ETL只是数据工程的一部分,其工作量通常仅占整个数据项目的 30% 左右。

而一个数据工程项目,本质上是要解决三大问题:

    • 客户有什么?

    • 客户想要什么?

    • 怎样设计最合理?

因此,在数据工程项目中,数据现状梳理业务理解 和 数据模型设计 等工作量通常占据了项目的大部分,约占百分之五六十。如果在这些关键阶段 没有深入了解情况理解需求不充分 或 设计不合理,就可能导致开发返工,从而影响整个项目的交付进度。

CDP(Customer Data Platform)是一种面向营销的 客户数据管理平台,旨在采集、整合、分析和应用来自不同渠道和场景的实时和非实时客户数据。通过客户建模设计营销活动提高营销效率 优化客户体验,实现企业业绩和利润的增长。

CDP在功能上注重用户群体分析,包括 分群标签画像 和 变化趋势等。

通过将多渠道、多场景的客户数据整合到一个平台中,为企业提供全面的客户视图和洞察。这使得企业能够更好地了解客户的行为、偏好和需求,从而精准地定位目标受众,并开展个性化的营销活动。

CDP的功能还包括 数据清洗数据质量管理数据安全 和 隐私保护等方面的支持,以确保数据的准确性一致性 合规性

通过CDP,企业能够建立长期的客户关系,并提供卓越的客户体验。

它为企业提供了一个集中管理和利用客户数据的平台,从而使营销团队能够更加智能地分析客户数据、制定营销策略,并实时监测和优化营销效果。

这些功能帮助企业实现更精准的营销投放、提升客户忠诚度,最终达到业绩和利润的增长。

“ CDP 与 CRM系统、DMP系统通常有很多关联,也有区别。CDP 是面向客户营销和运营场景,使用者以营销人员为主,营销活动包括新客获取,也包含老客运营。数据以企业的一方客户数据为主,一般包含 PII (Personal Identifiable Information,个人身份信息) 信息,也可包含其他来源数据。

CRM是面向记录和分析场景,使用者以销售和服务人员为主,管理内容是一方客户数据;DMP面向营销场景,使用者以营销人员为主。营销活动以拉新为主,系统一般会直接对接数字媒体,数据以二方或三方数据为主,一般不含PII信息。

CDP系统可以看作是 CRM 系统的功能延伸,一般会从 CRM 系统、DMP 系统中获取数据,可以相互集成。”

PS:一方数据是指企业自由的客户相关数据,即收集来源为客户自由渠道;二方数据是指媒体或者服务商来源的数据,如广告投放中的点击、曝光数据;三方数据是其他来源的数据。以上含义属于在数字化广告中常见提法。

CDP项目数据工程主要包括7个阶段,如下所示,在后面针对每个阶段的详细介绍中首先会给出每个阶段的输入和输出,再介绍每个阶段的工作内容和要点。

1) 数据调研 —— 业务系统和数据源梳理

2)业务理解 —— 标签体系及其计算口径梳理

3)集成设计 —— 数据集成接口及ODS层数据设计

4)数据设计 —— 数据模型设计

5)开发过程 —— ETL 设计

6)开发过程 —— ETL 开发

7)部署运维 —— 运维

如下图所示,这些过程时自下而上顺序进行的,规范化开发、设计过程贯穿始终。也可以根据项目的实际情况迭代进行,

3ac9274378ce6cd5b1351464352de8f9.jpeg

第一步:数据调研

数据调研是为数据采集做准备的重要步骤。在这个过程中,我们需要进行以下工作,以全面了解数据的情况:

  1. 客户的一方数据:我们需要深入了解客户已有的数据资源。这包括客户内部产

    生的数据,例如交易记录、行为数据、个人信息等。通过了解这些一方数据,

    我们可以获得客户的基本情况,并了解他们的行为和偏好。

  2. 可能获得的二方数据:除了客户一方数据,我们还要探索可能从合作伙伴或其他合作方获得的数据。这些二方数据可能包括与客户相关的合作伙伴数据、合作关系数据等。通过获取这些数据,我们可以扩大我们对客户的了解,并丰富数据的多样性和广度。

  3. 可能获得的三方数据:在数据调研过程中,我们也要调查可能获得的三方数据来源。这些数据来源包括外部数据提供商、数据市场等。通过获取三方数据,我们可以进一步丰富数据的维度和深度,获取更多关于客户的相关信息。

  4. 数据内容和关系:在调研过程中,我们需要详细了解数据的内容和数据之间的关系。这包括数据字段的定义、数据格式、数据的存储方式等。通过了解数据的内容和关系,我们可以确保在数据采集和整合过程中的准确性和一致性。

  5. 数据质量评估:除了了解数据的内容和关系,我们还需要评估数据的质量。这包括数据的完整性、准确性、一致性和及时性等方面。通过对数据质量的评估,我们可以了解数据的可靠性和可用性,并为后续的数据处理和分析工作提供基础。

总得来说,数据调研是为数据采集和处理提供基础的重要步骤。通过了解客户的数据,以及评估数据的内容、关系和质量,我们可以确保在后续的数据工程实践中获得高质量和有价值的数据资源。

第二步:标签体系及其口径数据(业务调研)

在这一步中,我们需要进行标签体系和口径数据的梳理,主要包括以下几个方面的工作:

  1. 业务调研:首先,我们需要与业务方进行充分的沟通和调研,了解他们的数据需求。通过与业务方的合作,我们可以将业务方的数据需求转化为具体的标签需求,确保我们可以准确地衡量和描述业务指标。

  2. 标签需求定义:基于业务调研的结果,我们可以明确标签体系的设计和定义。标签是对数据的描述和分类,可以用来衡量和分析客户行为、特征和偏好。在这一步中,我们需要明确每个标签的定义和含义,确保标签能够准确地反映业务指标。

  3. 口径数据定义:除了标签的业务定义,我们还需要定义标签的口径数据。口径数据包括 业务口径 和 技术口径。业务口径是指标计算所需的业务规则和逻辑,它们反映了业务指标的计算方式。技术口径是指标的数据源、数据处理和计算方法,它们确保了标签的准确性和可靠性。

通过对标签体系和口径数据的梳理,我们可以确保在后续的数据处理和分析过程中,能够基于准确和可靠的标签数据进行业务指标的衡量和分析。

第三步:数据集成接口定义

第三步是定义数据集成接口,主要包括以下几个方面的工作:

  1. 数据源获取接口设计:根据需要从各个数据源获取数据的要求,我们需要设计相应的数据获取接口。这包括确定数据获取的方式(例如API接口、数据库连接等),定义数据的传输协议和格式,以及确保数据获取的安全性和稳定性。

  2. 数据同步存储路径设计:一旦数据被获取,我们需要确定数据同步后的存储路径。这包括选择合适的存储介质(如数据库、数据仓库、文件系统等),并设计数据存储的结构和格式,以便后续的数据处理和分析能够顺利进行。

  3. 同步接口更新周期和方式:在定义数据集成接口时,我们需要明确每个同步接口的更新周期和更新方式。这包括确定数据同步的频率(如每日、每小时等),以及确定是增量更新还是全量更新。这些决策将影响数据的实时性和准确性。

通过定义数据集成接口,我们能够确保从各个数据源获取数据的程序接口设计合理,并能够按照预定的周期和方式进行数据的同步和更新。

第四步:数据模型设计

数据模型设计主要是参考 Kimball 维度建模,以分析决策的需求出发构建模型。设计主要按以下的步骤:

  1. 选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;

  2. 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

  3. 识别维表。选择好粒度之后,就需要基于这个粒度来设计维表,包括维度属性,用于分析时进行分组和筛选。

  4. 选择事实。确定分析需要衡量的指标。

我们需要考量将表划分为事实表维度表两种类型。其中,事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表等。维度表则需要考虑,缓慢变化维度、退化维度、雪花维度等。

除了常规的 维度建模,为了能更好的支持 CDP,我们引入了 UEI 模型,且听后面细细道来。

第五步:ETL设计

在企业级CDP项目的数据工程实践中,ETL 设计是关键步骤之一,它主要包括以下两个方面的设计工作:

  1. 数据处理工作流设计:在这一步中,我们需要设计数据处理的工作流程,即定义加工目标数据集的步骤和任务流。这包括确定数据的抽取(Extract)、转换(Transform)和加载(Load)的过程。我们需要考虑数据的来源、数据的处理顺序以及数据的流向。通过合理的工作流设计,可以确保数据处理过程的有序性和高效性。

  2. 数据处理逻辑设计:在数据处理工作流中的每个环节,我们需要设计具体的数据处理逻辑。这包括对数据进行清洗、过滤、转换、计算等操作,以满足业务需求和数据质量要求。在设计数据处理逻辑时,需要考虑数据结构、数据类型、业务规则等因素,并选择适当的数据处理工具和技术来实现。

ETL设计的质量和效率直接影响数据的准确性和可用性,对于企业的决策和运营具有重要意义。因此,在进行ETL设计时,需要充分理解业务需求,合理规划数据处理流程,并利用合适的工具和技术实现数据处理逻辑。

第六步:ETL开发

在企业CDP项目的数据工程实践中,ETL开发是将设计好的数据处理逻辑转化为可执行的程序代码的过程。它主要包括以下几个关键步骤:

  1. 编写程序代码:根据前面设计好的数据处理逻辑,使用相应的开发语言(如SQL、Python等)编写程序代码。这些代码用于实现数据的抽取、转换和加载过程,包括数据清洗、转换操作、计算逻辑等。编写代码时,需要遵循最佳实践和编程规范,确保代码的可读性、可维护性和性能优化。

  2. 配置调度依赖和运行时间:完成代码编写后,需要配置ETL任务的调度依赖关系和运行时间。这包括定义任务之间的依赖关系,确保数据流的正确顺序和依赖关系,以及设置任务的运行时间,确定ETL任务的调度频率和时间窗口。

  3. 数据结果核查:在ETL开发完成后,需要对数据的结果质量进行核查。这包括验证数据的完整性、准确性和一致性,确保数据处理的结果符合预期和业务要求。可以通过比对源数据和目标数据的关键指标、进行抽样验证、输出日志信息等方式来进行数据结果的核查。

ETL开发过程需要开发人员具备相关的编程技能和数据处理经验,同时也需要与业务团队密切合作,及时调整和优化数据处理逻辑,以满足业务需求和数据质量要求。

第七步:运维

ETL运维是保证系统稳定运行、数据质量和需求变更的关键环节。它主要包括以下几个方面的工作:

  1. 系统监控与故障处理:运维团队需要监控ETL系统的运行情况,包括任务的启动、运行状态、运行时间等。如果任务没有按时启动或出现故障,需要及时进行故障处理和调整,保证系统的稳定性和可用性。

  2. 数据质量分析与处理:ETL运维人员需要对数据质量进行监测和分析,及时发现和解决数据质量问题。这包括检查数据的完整性、准确性、一致性等方面,发现数据异常和不一致性的情况,进行数据修复和校正,保证数据的质量符合要求。

  3. 需求变更管理:随着业务的发展和变化,可能会出现需求的变更和新增。ETL运维团队需要及时响应和管理这些需求变更,包括调整ETL任务的逻辑、新增数据处理流程等。运维人员需要与业务团队紧密合作,及时了解需求变更,并进行相应的系统调整和优化。

通过有效的ETL运维工作,我们能够保证ETL系统的稳定运行,及时处理数据质量问题,并适应业务需求的变化。

本专题,主要是为一个甲方客户实施数据工程项目的工作经验总结。

以乙方为甲方客户建立一个营销CDP系统项目为背景,重点介绍在项目实施方将自研的CDP软件产品部署到甲方生产环境后,乙方数据工程人员与甲方数据人员一起完成的数据工程设计、开发、实施的过程及工作内容。

……

以上。

1970304cd005863ca77a787b4471194a.gif

数据体系构建👇

  • 数仓解惑:数据域和主题域是什么关系?

  • 数仓实践:总线矩阵架构设计

  • 数仓解惑:什么是 OneData 体系?

  • 数仓实践:建模方法论综述

  • 数仓实践:浅谈 Kimball 维度建模

  • 数仓实践:OLAP数仓总结

  • 数据思考:数据驱动业务的四个层次

更多精彩👇

这篇关于企业级CDP数据工程实践:建设中的最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316183

相关文章

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

SpringBoot整合Canal+RabbitMQ监听数据变更详解

《SpringBoot整合Canal+RabbitMQ监听数据变更详解》在现代分布式系统中,实时获取数据库的变更信息是一个常见的需求,本文将介绍SpringBoot如何通过整合Canal和Rabbit... 目录需求步骤环境搭建整合SpringBoot与Canal实现客户端Canal整合RabbitMQSp

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis