3、数据资产目录构建:如何盘点数据资产?——从业务系统到数据地图,建立全量资产清单
数据资产目录,说白了就是你家数据资产的「户口本」。没有它,你连自己家里有多少数据、数据在哪、谁在用都不知道,还谈什么治理?
我见过太多企业,一上来就喊着要建数据中台、要做数据治理。结果呢?连最基本的「有哪些数据库、多少张表、字段含义是什么」都说不清楚。嗯,这就是典型的「数据家底不清」。
这一章,我们就来聊聊怎么把散落在各个业务系统里的数据,一步步盘点清楚,最终形成一张完整的数据地图。
3.1 盘点前的准备工作:别急着动手
我个人习惯,做任何事之前先想清楚「怎么干」。数据盘点也一样,别上来就拉个 Excel 让业务部门填,那基本是白费功夫。
3.1.1 明确盘点范围
你得先回答三个问题:
- 盘哪些系统?——核心业务系统(ERP、CRM、HRM)、外围系统、还是全部?
- 盘到什么粒度?——数据库级、表级、字段级、还是值级?
- 盘哪些属性?——技术属性(类型、长度)、业务属性(含义、Owner)、还是管理属性(创建时间、更新频率)?
3.1.2 组建盘点团队
数据盘点不是 IT 部门一家的事。你需要三类人:
| 角色 | 来源 | 职责 |
|---|---|---|
| 技术负责人 | IT 部门(DBA/数据工程师) | 负责技术元数据采集、数据库连接、脚本编写 |
| 业务负责人 | 业务部门(熟悉系统的人) | 负责业务含义解释、字段定义、Owner 确认 |
| 协调人 | 数据治理办公室/PMO | 负责进度跟踪、问题协调、质量审核 |
3.2 盘点四步法:从业务系统到数据地图
我把数据盘点总结成四个步骤,你照着做就行。
Step 1:技术元数据采集——先把「硬货」捞出来
这一步是纯技术活。通过连接数据库,把表结构、字段信息、主外键、索引等元数据自动抓取出来。
常用的采集方式:
- 直接连接数据库:通过 JDBC/ODBC 连接,查询系统表(如 MySQL 的
information_schema) - 使用元数据工具:如 Apache Atlas、DataHub、Informatica 等
- 写脚本批量采集:Python + SQL 脚本,适合定制化需求
举个例子,用 SQL 采集 MySQL 的表和字段信息:
-- 采集所有表信息
SELECT
TABLE_NAME,
TABLE_COMMENT,
ENGINE,
CREATE_TIME,
UPDATE_TIME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';
-- 采集所有字段信息
SELECT
TABLE_NAME,
COLUMN_NAME,
COLUMN_TYPE,
IS_NULLABLE,
COLUMN_DEFAULT,
COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
注意:采集时一定要考虑对生产库的影响。我建议在从库或备份库上执行,或者选择业务低峰期。曾经有个同事直接在核心交易库上跑全量采集,结果把库搞挂了……嗯,后来他就不在这行了。
Step 2:业务元数据补充——给数据「翻译」成人话
技术元数据是机器语言,业务人员看不懂。比如字段名 cust_id,你得告诉业务人员这是「客户编号」。
这一步需要业务负责人参与,逐表逐字段确认:
- 字段中文名:比如
create_dt→ 创建日期 - 字段业务定义:比如「订单状态」的取值范围(0-待支付、1-已支付、2-已发货……)
- 字段来源:这个字段是用户填的?系统生成的?还是从其他系统同步过来的?
- 字段质量规则:比如「手机号」必须 11 位数字,「邮箱」必须包含 @
我习惯用一张「字段映射表」来管理这个过程:
| 表名 | 字段名 | 中文名 | 业务定义 | 数据来源 | 质量规则 | 业务Owner |
|---|---|---|---|---|---|---|
| t_order | order_id | 订单编号 | 系统自动生成的唯一订单标识 | 系统生成 | 必填,唯一 | 张三(订单组) |
| t_order | cust_mobile | 客户手机号 | 客户下单时填写的手机号码 | 用户输入 | 11位数字,必填 | 李四(客户组) |
| t_order | order_amt | 订单金额 | 订单商品总金额(含税) | 系统计算 | 大于0,保留两位小数 | 王五(财务组) |
Step 3:数据血缘梳理——搞清楚数据「从哪来,到哪去」
数据血缘,就是数据的「前世今生」。一个字段从源系统产生,经过 ETL 加工,最后出现在报表里,中间经历了哪些环节?
为什么要做血缘?
- 影响分析:源系统字段改了,会影响哪些下游报表?
- 问题溯源:报表数据不对,是源头错了还是中间加工错了?
- 合规审计:监管要求说明某个数据的来源和加工过程,你能说清楚吗?
血缘梳理的粒度:
- 字段级血缘:最细粒度,能精确到某个字段的转换逻辑
- 表级血缘:表与表之间的依赖关系
- 系统级血缘:系统与系统之间的数据流转
Step 4:数据地图生成——把资产「可视化」
最后一步,把前面三步的成果整合起来,形成一张可视化的数据地图。
数据地图应该包含:
- 资产总览:有多少数据库、多少表、多少字段
- 分类导航:按业务域(财务、人力、销售)、按系统、按 Owner 分类浏览
- 搜索功能:支持按表名、字段名、中文名、业务描述搜索
- 详情展示:点击某张表,能看到字段列表、业务定义、血缘关系、Owner 信息
下面这张图,就是数据资产目录的核心结构:
3.3 盘点过程中的常见坑
做了这么多年数据治理,我踩过的坑不少。分享几个典型的:
坑一:追求完美,一步到位
我曾经有个项目,团队花了 3 个月设计元数据模型,想着把所有可能的情况都覆盖到。结果模型还没落地,业务已经变了三轮。我的建议是:先跑通 80% 的核心场景,剩下的 20% 迭代优化。别想着一次吃成胖子。
坑二:只盘不治,盘完就扔
很多企业盘点完数据资产,把 Excel 往共享盘一放,就没人管了。半年后再看,数据早就过时了。数据资产目录必须持续运营,要有专人维护,要有变更流程。
坑三:忽视业务参与
数据盘点如果只有 IT 部门自己玩,那盘点出来的东西业务部门根本不认。你想想看,连字段含义都是 IT 猜的,业务敢用吗?一定要让业务部门深度参与,尤其是业务 Owner 的确认,这是后续数据治理的基础。
3.4 盘点成果的验收标准
怎么判断盘点做得好不好?我一般看这几个指标:
| 验收维度 | 验收标准 | 验收方法 |
|---|---|---|
| 完整性 | 核心系统的表覆盖率达到 100% | 与系统清单逐一比对 |
| 准确性 | 字段的业务定义与实际情况一致 | 随机抽取 20% 的字段,找业务确认 |
| 可用性 | 业务人员能通过数据地图找到所需数据 | 选取 5 个典型场景,让业务人员实操 |
| 时效性 | 元数据更新不超过 T+1 | 检查元数据采集任务的执行日志 |
嗯,数据资产目录的构建,说白了就是「把散落的数据捡回来,洗干净,贴上标签,摆上货架」。这个过程不轻松,但它是数据治理的基石。没有这张地图,后面所有的治理动作——数据标准、数据质量、数据安全——都无从谈起。