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

news2024/11/19 19:34:50

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

今天想和大家分享下 企业级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数仓总结

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

更多精彩👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

I.MX6ULL_Linux_驱动篇(40)异步通知

在前面使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取…

Linux——进程信号(下)

目录 总结 一,信号保存 1.1 阻塞信号 2.2 信号在内核(操作系统)中的表示 2.3 系统接口 2.3.1 sigset_t信号集 2.3.2 信号集的操作函数 2.3.3 sigprocmask 2.3.4 sigpending 2.4 实验样例 三,信号处理 3.1 信号捕捉 3.2 sigaction接口 3.3 实验…

2022年真题 - 17 - 系统优化

系统优化 题目配置验证配置 题目 StorageSrv - 系统优化 系统资源限制设置:设置所有用户的硬件跟软件的最大进程数、最大文件打开数为65535;开启 IPv4 恶意 icmp 错误消息保护;开启 SYN 洪水攻击保护;允许系统打开的端口范围为 …

服务网关 Gateway

服务网关 Gateway 服务网关介绍Gateway 介绍Gateway 和 Nginx 网关的区别Gateway 核心概念Gateway工作流程 Gateway 案例Predicate(断言)After 路由谓词工厂Before路由谓词工厂Between 路由谓词工厂Cookie路由谓词工厂Header 路由谓词工厂Host 路由谓词工…

支付宝支付(六):小程序支付(Go+Gin+内网穿透)

一、前置条件 (1)go语言,1.18 (2)Gin、第三方依赖包:gopay【github.com/go-pay/gopay/alipay】https://github.com/go-pay/gopay/blob/main/doc/wechat_v3.md (3)支付宝支付相关信…

Java面向对象程序开发——JDK8新特性

文章目录 网络编程入门知识JDK8新特性Lambda表达式以多线程为例:Lambda结合for循环: Stream流获取一个流的2种常用的方式:常用方法终结方法延迟方法 案例 网络编程入门知识 软件结构、协议分类、网络通信协议、网络编程三要素、TCP通信协议、…

爬虫的分布式思维与实现思路

爬虫的分布式思维与实现思路 基本构架 scrapy-redis实现分布式,其实从原理上来说很简单,这里为描述方便,我们把自己的核心服务器称为master,而把用于跑爬虫程序的机器称为slave 我们知道,采用scrapy框架抓取网页&…

netty学习(4):通过SpringBoot Web发送消息实现netty实现多个客户端与服务器通信

1. 基于netty学习(3):SpringBoot整合netty实现多个客户端与服务器通信的学习,要想通过http在netty客户端之间发送消息,需要实现spring-boot-starter-web,封装消息格式,自动调用netty客户端 2. 封装一个简单…

算法笔记——哈希表篇

一般哈希表都是用来快速判断一个元素是否出现集合里,哈希表并不意味着一定要使用HashMap,有时候使用数组更方便,有时候要使用set,依据具体情况而定,哈希表是典型的空间换时间。 数组作为哈希表 一些应用场景就是为数组…

工具 | 应用程序无法启动,应为应用程序的并行配置不正确

工具 | 应用程序无法启动,应为应用程序的并行配置不正确 “E:\02-Doc\朱老师物联网大讲堂-全部视频\朱有鹏老师嵌入式linux核心课程\开发版光盘资料\X210V3S_A\tools\x210_Fusing_Tool.exe”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.MFC,processorA…

DNS-去中心化域名系统,创建您在DeSoc 社会中的YUAN ID

传统域名系统 (DNS) 是一个分层的分散信息存储,用于将用户在网络浏览器中输入可读名称(例如 www.baidu.com)解析为IP地址,来访问互联网上的计算机。传统DNS使用一种分布式数据库,有严格的上下级关系,上级仅…

[Android JNI] --- JNIEnv和JavaVM

1 JVMEnv 1.1 JNIEnv 是什么 JNIEnv 即 Java Native Interface Environment,Java 本地编程接口环境。JNIEnv 内部定义了很多函数用于简化我们的 JNI 编程。 JNIEnv是提供JNI Native函数的基础环境,线程相关,不同线程的JNIEnv相互独立&#…

SpringBoot快速回顾(@value读取配置文件)

目录 1.定义配置文件2. 定义Controller类3. 测试4. 优化4.1 封装实体类4.3 定义controller类4.2 测试 本文将介绍如何使用value读取配置文件的内容。 在实际项目中,往往会在配置文件中写项目部署需要配置的环境信息(数据库驱动,数据库账号密码…

医疗金融法律大模型:从ChatDoctor到FinBERT/FinGPT/BloombergGPT、ChatLaw/LawGPT_zh

第一部分 各种医疗类ChatGPT:或中英文数据微调LLaMA、或中文数据微调ChatGLM 1.1 基于LLaMA微调的中英文版ChatDoctor 1.1.1 ChatDoctor:通过self-instruct技术提示API的数据和医患对话数据集微调LLaMA Github上有一个基于LLaMA模型的医疗微调模型&am…

zabbix (自定义监控内容-配置邮件报警-自动发现与自动注册)

目录 zabbix 客户端主机配置自定义监控内容设置邮件报警zabbix 自动发现与自动注册zabbix 自动发现(对于 agent2 是被动模式)//zabbix 自动发现(对于 agent2 是被动模式)zabbix 自动注册(对于 agent2 是主动模式&#…

IDEA+springboot+jpa+Layui+Mysql销售考评系统源码

IDEAspringbootjpaLayuiMysql销售考评系统源码 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.评分结果3.评分管理4.添加评分5.用户管理6.添加用户7.角色管理8.添加角色8.销售管理9.添加销售 三、部分代码UserDao.javaUserController.javaUser.java 四、其他获取源码 一、…

计算机组成原理实验二:多位逻辑门构建

目录 一、实验目的 二、实验设备 三、实验原理 四、实验内容 1. 16位非门 2.16位与门 3.16位或门 4. 16位复用器 五、实验习题 1.还可以怎样设计各种芯片的物理结构 2.“block copy”(块复制)和edit菜单中“copy to clipboard”的区别 六、自…

在线OJ项目

1.在线OJ-背景介绍 在线的网页版的编程平台.,打开一个网站,上面就能看到很多的算法题.,在线做题,在线提交.立即就能看到运行结果,是否通过. leetcode 牛客等 一个在线OJ平台,核心功能: 能够管理题目(保存很多的题目信息:题干+测试用例)题…

FPGA软核调试方法

软核工程创建步骤 创建如下工程目录 bin目录:存放SDK工程生成的elf文件(Release编译模式) hdf目录:存放fpga工程师提供的的hdf文件 prj目录:工程目录(包含SDK工程源码) doc目录:文档目录 基于2018.2版本SDK建立工程 打开Xil…

Spring Boot中的CSRF攻击及预防

Spring Boot中的CSRF攻击及预防 什么是CSRF攻击? CSRF(Cross-site Request Forgery)跨站请求伪造,也称为“one-click attack”或“session riding”,是一种网络攻击方式,攻击者通过在受害者浏览器上欺骗或…