3、数据资产目录构建:如何盘点数据资产?——从业务系统到数据地图,建立全量资产清单

数据资产目录,说白了就是你家数据资产的「户口本」。没有它,你连自己家里有多少数据、数据在哪、谁在用都不知道,还谈什么治理?

我见过太多企业,一上来就喊着要建数据中台、要做数据治理。结果呢?连最基本的「有哪些数据库、多少张表、字段含义是什么」都说不清楚。嗯,这就是典型的「数据家底不清」。

这一章,我们就来聊聊怎么把散落在各个业务系统里的数据,一步步盘点清楚,最终形成一张完整的数据地图。

3.1 盘点前的准备工作:别急着动手

我个人习惯,做任何事之前先想清楚「怎么干」。数据盘点也一样,别上来就拉个 Excel 让业务部门填,那基本是白费功夫。

3.1.1 明确盘点范围

你得先回答三个问题:

  • 盘哪些系统?——核心业务系统(ERP、CRM、HRM)、外围系统、还是全部?
  • 盘到什么粒度?——数据库级、表级、字段级、还是值级?
  • 盘哪些属性?——技术属性(类型、长度)、业务属性(含义、Owner)、还是管理属性(创建时间、更新频率)?
我的建议:第一次盘点,先聚焦核心业务系统的表级和字段级。别贪多,贪多嚼不烂。我曾经有个项目,客户要求一次盘完 200 多个系统,结果干了半年还没收尾,最后不了了之。

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 加工,最后出现在报表里,中间经历了哪些环节?

为什么要做血缘?

  • 影响分析:源系统字段改了,会影响哪些下游报表?
  • 问题溯源:报表数据不对,是源头错了还是中间加工错了?
  • 合规审计:监管要求说明某个数据的来源和加工过程,你能说清楚吗?

血缘梳理的粒度:

  • 字段级血缘:最细粒度,能精确到某个字段的转换逻辑
  • 表级血缘:表与表之间的依赖关系
  • 系统级血缘:系统与系统之间的数据流转
避坑指南:我曾经见过一个团队,花了大半年时间手工画血缘图,画了上千张 Excel。结果业务一变化,全废了。我的建议是:用工具自动解析 SQL 和 ETL 脚本来生成血缘,人工只做校验和补充。别用手工,真的会累死人。

Step 4:数据地图生成——把资产「可视化」

最后一步,把前面三步的成果整合起来,形成一张可视化的数据地图。

数据地图应该包含:

  • 资产总览:有多少数据库、多少表、多少字段
  • 分类导航:按业务域(财务、人力、销售)、按系统、按 Owner 分类浏览
  • 搜索功能:支持按表名、字段名、中文名、业务描述搜索
  • 详情展示:点击某张表,能看到字段列表、业务定义、血缘关系、Owner 信息

下面这张图,就是数据资产目录的核心结构:

数据资产目录核心结构图 数据资产目录核心结构 业务系统数据源 技术元数据自动采集 业务元数据补充 + 血缘梳理 数据资产目录(数据地图) 搜索 / 分类导航 / 详情展示 / 血缘追溯 / Owner管理 核心目标 建立全量资产清单 实现数据「可视、可查、可管」 关键产出 字段映射表 数据血缘图谱

3.3 盘点过程中的常见坑

做了这么多年数据治理,我踩过的坑不少。分享几个典型的:

坑一:追求完美,一步到位

我曾经有个项目,团队花了 3 个月设计元数据模型,想着把所有可能的情况都覆盖到。结果模型还没落地,业务已经变了三轮。我的建议是:先跑通 80% 的核心场景,剩下的 20% 迭代优化。别想着一次吃成胖子。

坑二:只盘不治,盘完就扔

很多企业盘点完数据资产,把 Excel 往共享盘一放,就没人管了。半年后再看,数据早就过时了。数据资产目录必须持续运营,要有专人维护,要有变更流程。

坑三:忽视业务参与

数据盘点如果只有 IT 部门自己玩,那盘点出来的东西业务部门根本不认。你想想看,连字段含义都是 IT 猜的,业务敢用吗?一定要让业务部门深度参与,尤其是业务 Owner 的确认,这是后续数据治理的基础。

3.4 盘点成果的验收标准

怎么判断盘点做得好不好?我一般看这几个指标:

验收维度 验收标准 验收方法
完整性 核心系统的表覆盖率达到 100% 与系统清单逐一比对
准确性 字段的业务定义与实际情况一致 随机抽取 20% 的字段,找业务确认
可用性 业务人员能通过数据地图找到所需数据 选取 5 个典型场景,让业务人员实操
时效性 元数据更新不超过 T+1 检查元数据采集任务的执行日志

嗯,数据资产目录的构建,说白了就是「把散落的数据捡回来,洗干净,贴上标签,摆上货架」。这个过程不轻松,但它是数据治理的基石。没有这张地图,后面所有的治理动作——数据标准、数据质量、数据安全——都无从谈起。