4. 数据资产目录建设
数据资产目录,说白了就是企业数据资产的「黄页」。你想想看,一个公司几千张表、几万个字段,如果没有一个统一的目录,业务部门想找「客户近30天交易金额」这个指标,得问遍所有人。我经历过这种痛苦——有一次业务方催着要数据,我硬是花了三天才搞清楚哪个表才是准确的。
所以,目录建设不是搞个搜索框就完事了。它背后是一整套体系:怎么分层、怎么采集、怎么让人找得到、怎么持续维护。这一章,我把这些年的实战经验拆开来讲。
4.1 目录架构设计:分层与分类
目录架构是地基。地基没打好,后面全是坑。我个人习惯把目录分成三层:
- 业务层:面向业务用户,按主题域、业务过程组织。比如「营销域-活动分析-活动ROI」。
- 技术层:面向数据工程师,按数据源、数据库、表结构组织。比如「ODS层-交易库-订单表」。
- 指标层:面向分析师和管理层,按指标体系组织。比如「北极星指标-营收-GMV」。
这三层不是孤立的。它们之间要有映射关系。业务层的「活动ROI」要能追溯到技术层的具体表和字段,指标层的「GMV」也要能下钻到业务层的「交易金额」。
核心原则:目录架构要支持「业务找得到、技术看得懂、管理管得住」。
下面这张图是我常用的目录分层架构,你可以参考:
分类维度上,我建议至少包含:
- 主题域分类:按业务板块划分,如营销、交易、用户、商品、财务。
- 系统来源分类:按数据产生系统划分,如CRM、ERP、WMS、APP埋点。
- 数据敏感度分类:公开、内部、敏感、高度敏感,用于权限控制。
- 生命周期分类:规划中、建设中、已上线、已下线。
我的经验:分类不要超过4层。超过4层,用户就迷路了。我曾经见过一个目录分了7层,结果没人用——因为点5次才能找到想要的表。
4.2 元数据采集与注册
目录建好了,数据从哪来?靠手动录入?别开玩笑了。几百张表,手动录入不仅慢,还容易出错。我见过一个团队手动录元数据,结果表名写错了,业务方查了三天才发现。
正确的做法是:自动化采集 + 人工补录。
4.2.1 技术元数据自动采集
技术元数据包括:表结构、字段类型、分区信息、主键、索引、DDL变更历史等。这些信息,数据库本身就有。我们只需要写采集器去捞。
下面是一个简化的Hive元数据采集脚本示例:
-- 采集Hive表元数据
SELECT
d.NAME AS database_name,
t.TBL_NAME AS table_name,
t.TBL_TYPE AS table_type,
tp.PARAM_VALUE AS table_comment,
c.COLUMN_NAME,
c.TYPE_NAME AS column_type,
c.COMMENT AS column_comment,
c.INTEGER_IDX AS column_order
FROM
metastore.TBLS t
JOIN metastore.DBS d ON t.DB_ID = d.DB_ID
LEFT JOIN metastore.TABLE_PARAMS tp
ON t.TBL_ID = tp.TBL_ID AND tp.PARAM_KEY = 'comment'
LEFT JOIN metastore.COLUMNS_V2 c
ON t.TBL_ID = c.CD_ID
WHERE
d.NAME = 'your_database'
ORDER BY
t.TBL_NAME, c.INTEGER_IDX;
采集频率怎么定?我建议:
- 全量采集:每天凌晨一次,覆盖所有表。
- 增量采集:每15分钟一次,只采集DDL变更的表。
- 实时采集:通过监听DDL事件(如Hive Metastore事件),秒级同步。
4.2.2 业务元数据人工补录
技术元数据机器能搞定,但业务元数据——比如「这个字段是什么意思」「这个指标怎么算的」——必须靠人。我建议设计一个「元数据注册表单」,包含:
| 字段 | 说明 | 是否必填 |
|---|---|---|
| 资产名称 | 业务友好的中文名称,如「近30天活跃用户数」 | 是 |
| 资产描述 | 一句话说清楚这个资产是干什么的 | 是 |
| 所属主题域 | 从预定义的主题域列表中选择 | 是 |
| 业务负责人 | 谁对这个数据的质量负责 | 是 |
| 计算口径 | 指标的SQL定义或业务规则 | 指标类必填 |
| 数据来源 | 来自哪个系统、哪个表 | 是 |
| 更新频率 | T+1、实时、小时级 | 是 |
| 敏感度等级 | 公开/内部/敏感/高度敏感 | 是 |
注意:人工补录的元数据一定要有审核流程。我曾经遇到过业务方乱填「计算口径」,导致下游报表算出来的数据全是错的。建议设置「数据治理委员会」角色,负责审核业务元数据的准确性。
4.3 目录检索与导航
目录建好了,元数据也采集了,但用户找不到,等于白建。我见过太多目录项目,上线后日活不到10个人。为什么?因为搜索太难用了。
好的目录检索,要做到三点:
- 模糊搜索:用户输入「活跃用户」,能搜到「DAU」「日活跃用户数」「活跃用户明细表」等。
- 多维度筛选:按主题域、数据源、负责人、敏感度等维度快速过滤。
- 关联推荐:搜「订单表」时,自动推荐相关的「订单明细表」「订单汇总表」「退款表」。
导航方面,我建议提供两种模式:
- 树形导航:按主题域→业务过程→资产名称,逐级展开。适合知道大概分类的用户。
- 搜索直达:输入关键词直接定位。适合知道具体名称的用户。
另外,热门资产排行榜也很有用。把最近7天被搜索、被查看最多的资产排在前面,新用户进来先看这些,能快速了解核心数据资产。
一个小技巧:在搜索结果中,把「有业务描述」的资产排在「只有技术元数据」的资产前面。因为前者说明有人维护过,可信度更高。我做过统计,这个排序策略能让用户找到正确资产的效率提升40%。
4.4 目录运营与维护
目录不是建完就完事了。它是个活物,需要持续运营。否则,三个月后,目录里的信息就过时了。
4.4.1 元数据质量监控
我建议建立一套元数据质量监控规则:
- 完整性检查:是否有表没有业务描述?是否有字段没有注释?
- 准确性检查:技术元数据是否与数据库实际结构一致?比如表被删了,目录里还在。
- 时效性检查:超过30天未更新的资产,标记为「待确认」。
下面是一个简单的质量评分逻辑:
-- 元数据质量评分(伪代码)
score = 0
IF 有业务描述 THEN score += 30
IF 有业务负责人 THEN score += 20
IF 有计算口径 THEN score += 20
IF 最近30天有更新 THEN score += 15
IF 有数据血缘 THEN score += 15
-- 总分100分,低于60分标记为「低质量资产」
4.4.2 资产生命周期管理
数据资产有生命周期。我一般这样管理:
| 阶段 | 状态 | 运营动作 |
|---|---|---|
| 规划中 | 草稿 | 仅创建者可见,待审批 |
| 已上线 | 发布 | 全员可见,定期检查质量 |
| 已废弃 | 下线 | 标记为废弃,保留历史记录,但不出现在搜索结果中 |
| 待清理 | 归档 | 超过180天无人访问,自动归档 |
4.4.3 运营机制
光有工具不够,还得有机制。我建议:
- 月度元数据治理会议:回顾元数据质量评分,讨论问题资产的处理方案。
- 季度资产盘点:清理废弃资产,更新过时信息。
- 年度目录优化:根据业务变化,调整主题域分类和目录结构。
核心观点:目录运营的本质是「让对的人,在对的时间,维护对的数据」。技术能解决80%的问题,剩下20%靠制度和责任心。
嗯,这一章的内容就这些。目录建设是个慢功夫,别指望一蹴而就。先把架构搭好,把采集跑通,再慢慢优化搜索和运营。只要坚持做,半年后你会看到效果的。