目录
做数据这行的,肯定常听到“元数据”“数据元”“元模型”这三个词。
开会时有人说“元数据管理”,转头又有人提“数据元标准”,偶尔还穿插“元模型设计”,但真要问它们仨到底啥区别,估计不少人说不清楚。
我见过不少团队,就是因为这三个概念没理清楚,做数据治理时走了不少弯路。今天我就用最实在的话,从定义、用处、具体怎么用这三个角度,把这三个概念拆解开。
都是干货,保证你看完就明白,以后跟同事聊起这事儿,心里能有个数。
先分享一份《数据仓库建设方案》,里面梳理了通用数据仓库解决方案,并且展现了数仓建设的全流程服务,包括调研、需求梳理、建设规范、建模等等,可以帮助大家更好地理解这些概念:数据仓库建设解决方案 - 帆软数字化资料中心(复制到浏览器打开)
一、元数据:描述“数据”本身的信息
说白了,元数据就是“关于数据的数据”。你别觉得这是绕口令,它的意思很简单:
任何一个数据资产,不管是一张表、一个字段,还是一个ETL任务,只要你想描述它的各种信息,这些信息合起来就是元数据。
我给你举个实际例子,比如公司数据库里有张“用户订单表”,它的元数据至少得包括这些:
- 存哪儿了:服务器路径是/data/prod/order,用的是Parquet格式;
- 啥时候更新:每天凌晨3点跑批,所以是T+1更新;
- 字段啥意思:“user_id”是用户唯一编号,“order_amt”是订单金额,范围在0到100万之间;
- 从哪儿来的:数据是从前端交易系统同步过来的,ETL任务号是etl_20240601;
- 谁负责维护:数据开发组的老王,有问题找他就行。
这些信息看着零散,但合在一起,就能让你对“用户订单表”有个全面的了解。
那么元数据到底有啥用?
简单说,元数据就是帮你解决“数据从哪儿来、能干啥、怎么用”这三个问题的:
实际工作中怎么用元数据的?最常见的场景有三个:
- 数据目录:把公司所有数据资产的元数据整理起来,按业务主题分类,再打上标签,业务人员想找数据,直接在目录里搜就行,不用再到处问;
- 血缘分析:元数据会记录数据的流转过程,比如“订单表”经过清洗变成“订单明细表”,再汇总成“销售报表”,一旦报表出错,顺着血缘往上查,能快速找到问题出在哪个环节;
- 质量监控:元数据里定义了字段的规则,比如“手机号”必须是11位数字,系统就会每天对照元数据检查。
二、数据元:数据里最小的“基本单元”
数据元,也叫数据元素,是描述一个具体业务属性的最小单元。
必须满足两个条件:
- 一是业务上能看懂,对应一个明确的概念;
- 二是技术上能说清,有统一的格式和规则。
举个例子,“用户手机号”就是一个典型的数据元,它的定义得写清楚:
你看,这样定义下来,不管是业务人员还是技术人员,看到这个数据元就知道它指的是什么,格式有啥要求。
数据元有啥用呢?
用过来人的经验告诉你,数据元最大的作用就是解决“各说各话”的问题。
同一个概念,不同部门可能叫不同的名,这样一来,跨部门调数据的时候就容易乱,算出来的结果也对不上。
而数据元给每个业务概念定一个统一的“标准”,不管哪个部门用,都得按这个标准来。
比如把“用户唯一标识”定义成数据元:
- 规定编码是“USER_ID”、
- 类型是字符串、
- 长度32位
全公司都用这个标准,数据口径就统一了。
数据元主要在三个地方用得多:
1.制定数据标准
公司层面的《数据标准手册》里,大部分内容都是数据元的定义。
比如银行的标准里:
“身份证号”这个数据元必须符合国家标准GB 11643-1999,长度18位,最后一位可以是X。
2.主数据管理
主数据(比如“用户”“商品”)的核心信息都是由数据元组成的。
比如“用户主数据”里:
就包含“用户姓名”“身份证号”“手机号”等多个数据元,每个数据元都按标准定义,保证主数据的一致性。
3.接口设计
系统之间传数据,接口里的每个字段其实都是数据元。
比如支付接口里的“交易金额”,必须按数据元的标准来定义:
类型是decimal,长度18位,保留2位小数,这样支付系统和账务系统对接时才不会因为格式问题出错。
三、元模型:规定“模型该怎么设计”的规则
元模型,简单说就是“模型的模型”。它不管具体的数据内容,只规定“怎么设计一个合理的模型”,包括:
- 模型里该有哪些部分
- 这些部分之间是什么关系
- 每个部分有啥要求
比如数据仓库的分层模型,就有一套元模型规则:
- ODS层(原始层)必须原样保存业务系统的数据,不能改字段名;
- DWD层(明细层)可以清洗数据,但必须保留所有关键信息;
- DWS层(汇总层)要基于DWD层聚合,
- 聚合的维度(比如按“省份”“月份”)得提前说清楚。
元模型有啥实际用处呢?
元模型是为了让模型设计“有章可循”,不然大家就会各按各的想法来,最后整个数据体系乱成一锅粥。
没有元模型的话,可能出现这种情况:
团队设计的“用户表”用“user_id”当主键,B团队设计的“用户信息表”用“u_id”当主键。
这样一来:
两个表明明说的是同一批用户,却没法关联。
有了元模型就不一样了,它会提前定好规则:
- 所有用户相关的表必须用“user_id”当主键,且类型为字符串;
- 所有业务表必须包含“create_time”和“update_time”字段。
也可以借助数据集成工具FineDataLink:
通过数据关联算子实现多表跨库关联,关联方式包括左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全外连接(FULL OUTER JOIN)四种。如果想在数据关联算子中查看关联效果,结果准确时,可以在DB表输入算子的样本设置按钮中,读取全量数据。立即体验FineDataLink:免费激活FDL(复制到浏览器打开)
这样一来,不管哪个团队设计模型,都得按这个规则来,模型之间才能兼容,数据才能打通。
元模型主要有三个应用场景:
1.数据建模规范
公司搞数据建模(比如维度建模、分层架构)时,元模型就是底层规则。
比如用星型模型设计销售主题,元模型会规定:
- “事实表”必须包含度量字段(比如“销售额”)和外键(比如“用户ID”“商品ID”),
- “维度表”必须包含描述信息(比如“商品名称”“分类”)
2.元数据管理平台
平台本身也需要元模型来定义“元数据该怎么存”。
比如FineDataLink中要管理“表元数据”和“字段元数据”,元模型就会规定:
- 每个“表元数据”必须关联多个“字段元数据”,
- 每个“字段元数据”必须包含“名称”“类型”“长度”这些信息。
3.低代码开发
现在很多低代码平台里,拖拽一个“表单”组件就能生成数据库表,背后就是元模型在起作用。
比如你选了“手机号”字段:
平台根据元模型就知道要生成11位的字符串类型,还会自动加校验规则。
四、元数据、数据元、元模型有啥区别
可能你看到这儿还是有点晕,我总结一张表,对比一下就清楚了:
简单来说:
- 元数据是“数据的说明书”,告诉你现有数据的情况;
- 数据元是“最小单元的标准”,规定每个基础信息该怎么定义;
- 元模型是“模型的设计手册”,告诉大家该怎么设计合理的模型。
五、实际工作中,三者是怎么配合的
别看它们各管一块,实际工作中是环环相扣的,从模型设计到数据应用,缺一不可:
1.设计模型时
先按元模型的规则搭框架,比如事实表要有度量字段,再用数据元定义具体字段,比如“订单金额”按数据元标准设为decimal类型,最后把设计好的模型信息(表名、存储路径等)存成元数据。
2.开发数据时
开发人员照着FineDataLink的元模型设计表结构,按数据元的标准定义每个字段,开发过程中产生的信息,比如谁开发的、什么时候上线的等,会自动变成元数据。
3.用数据时
业务人员通过元数据找到需要的表,看数据元理解字段含义,比如“status”字段的取值规则,对照元模型明白表的设计逻辑。
4.治理数据时
通过元数据监控表的变更,用数据元校验数据质量,按元模型检查模型是否合规,比如事实表没加外键。
总结
元数据、数据元、元模型这三个概念,看着有点绕,但其实都是数据治理的基础。
搞懂它们的区别,可以让数据管理更顺——元数据让数据能用起来,数据元让数据能统一起来,元模型让数据能建得合理起来。
以后再听到有人把这三个词混着说,你就可以跟他好好聊聊:它们不是一回