惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
I
InfoQ
博客园_首页
G
Google Developers Blog
爱范儿
爱范儿
Last Week in AI
Last Week in AI
量子位
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
月光博客
月光博客
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

博客园 - 大汪的数据之路

外企的问卷调查 10 Tips On How To Be Exceptional In Anything You Do(在所做的任何事情上变得卓越的10个方法) 企业网络环境全景解析——面向AI智能数据分析场景的数据工程师指南 数据虚拟化技术解析:从概念到实践 数据虚拟化:从“搬运数据”到“连接数据”的范式革命 数据运维值班预警自动化 数据“搬砖”实战经验 星环大数据使用体验 vibe coding使用体验 基于SQL实现分组的文字排序聚合 数据码农马年大吉 字符串分割并展开成表格的SQL实现方法 BI报表及可视化分析类工具使用经验总结(下) BI报表及可视化分析类工具使用经验总结(上) 基于Python实现自动化微信通知和预警 Chat2DB测试体验 常用数据管理工具与平台汇总 网易有数BI使用总结 网易NDH大数据平台使用经验 版本管理总结 程序自动化vs人工手动处理 SQL开发总结 数据平台使用经验 数据团队运维值班任务简介 Python环境安装、管理与部署 windows获取kerberos认证 SQL动态长度行列转置 ODI Scenario 场景 Oracle KEEP 分析函数
OneID系统建设实践总结
大汪的数据之路 · 2025-10-21 · via 博客园 - 大汪的数据之路

OneID是指将分布在不同系统中的同一个实体用同一个ID进行标识,这是在数据治理领域经常出现的一个概念。由于企业中存在大量的数据孤岛(业务源系统各自为战),因此作为下游数据仓库的架构及开发人员,迫切的需要将不同系统中同一个实体信息进行拉通,这样在后续的报表、驾驶舱等应用中,指标的口径才能准确有效。OneID最早是阿里提出来,属于OneData理论的一部分,通过识别实体的关键属性,将不同系统中的实体进行拉通、拆分、归并等操作。以下是根据在证券资管公司的品种与主体的OneID建设实践进行的总结。

1、设计原则

1、稳定性:保持OneID系统实体和源系统实体关系的稳定性,OneID实体只随源系统数据变化而变化
2、全面性:任何一个源系统的实体都需要与OneID实体建立关系
3、真实性:若OneID实体的“证件号”一致,则进行归并
4、优先级:OneID属性取值,根据系统优先级进行取值

2、拉通属性

基于对源系统的数据探查及行业背景知识及常识,推断可进行拉通的属性。如客户通过证件类型、证件号码、名称进行拉通,产品通过产品编码进行拉通。

3、逻辑处理方案

首先会创建实体信息表、实体识别信息表、实体与源系统关系表三张基础表,记录OneID所需的核心关键信息。基于核心表,OneID系统需要实现拉通、拆分、归并等基础操作逻辑。

1、拉通:通过拉通属性将分布在不同源系统中的同一实体进行拉通,赋予唯一的编码。

2、拆分:将不同源系统中已拉通的同一实体进行拆分,赋予新的编码。

3、归并:将OneID系统中的实体进行关联,标记为同一个实体。

其中,拉通-拆分是互为正反操作,代表的是源系统实体与OneID实体之间建立联系或拆开联系。

具体处理流程可以有以下两种思路(只要把所有的逻辑情形考虑完整即可,参照MECE法则):

image

image

4、技术落地方案

在实现OneID逻辑的技术方案中,利用编程语言(Java或Python)进行开发,结构会相对比较清晰。另一种方案就是基于SQL开发,虽然没有编程语言方便,但是可直接利用数据团队的现成的平台环境,无需再单独维护一套环境,并且可以直接利用数据团队成员的技术栈。实际环境中,公司已采购了大数据平台作为离线数据仓库平台,通过每日夜间进行批处理, 提供T-1日的数据报表等离线数据服务。因此最终采用基于Spark SQL的OneID逻辑开发的落地方案,以下是详细的处理流程:

image

5、系统开发上线

在产品场景中,由于公司内部的产品数据量较小,实体数量在1万以下。在客户OneID场景中,数据量适中,实体数量在百万左右。在建设过程中,团队共5人,逻辑梳理时间周期约一个月,代码开发周期约一个月。SQL代码量方面,产品OneID只有几百行,客户OneID有几千行,目前系统建设上线运行已三年多,运行稳定。

6、总结

OneID的主要作用就是将分散在不同系统中的同一实体进行识别出来。与OneID类似的概念和系统还有很多,如在客户数据方面,企业一般会有CRM系统,同时还会建设CDI(Customer Data integration)系统将客户信息进行整合以便为后续的营销场景提供服务。CDI系统的数据源通常包括公司内部的线上线下渠道的客户信息,以及用于清洗的外部第三方采购数据(如采购的客户住址信息)。

OneID系统与主数据系统也非常类似,主数据是指描述企业“核心业务实体”且被反复使用的高价值、高共享、高稳定性数据。常见的有客户、产品、账户、组织、人员、供应商、项目等各类主数据。

OneID系统的上线只是一个开始,要想真正的使用起来,后续仍然需要一个漫长持续的运营过程。上线之前,业务人员等数据使用方已习惯原有的系统ID,要改变习惯切换到新的OneID需要一个过程。在此期间,要保证OneID系统数据的准确性、完整性和及时性,才能逐步赢得业务的信任,只有结合严谨的设计方案、合理的代码处理、持续的运营才能真正的给业务提供价值。