元数据
元数据,简单定义就是描述数据的数据。在企业中,只要有数据存在的地方,就有其对应元数据。只有完整、准确的元数据存在,才能更好地理解数据,充分挖掘数据的价值。
1 物理元数据
描述物理资源的元数据,包括但不限于服务器、操作系统、机房位置等信息。
2 数据源元数据
描述数据源的元数据,通常包括四类信息:
- 数据源地址(IP、PORT等)
- 物理拓扑(主备、角色等)
- 权限(用户名、口令等)
- 库名、版本、域名等
3 存储元数据
描述对象存储的元数据,也是通常”狭义”上的元数据,包括几大类
管理属性(创建人、应用系统、业务线、业务负责人等)
生命周期(创建时间、DDL时间、版本信息等)
存储属性(位置、物理大小等)
数据特征(数据倾斜、平均长度等)
使用特征(DML、刷新率等)
数据结构
> 表/分区(名称、类型、备注等)
> 列(名称、类型、长度、精度等)
> 索引(名称、类型、字段等)
> 约束(类型、字段等)
4 计算元数据
描述数据计算过程的元数据,通常可分为数据抽取(ETL)或数据加工(JOB)两类计算。每类计算又可以进一步细分
- 控制元数据(配置属性、调度策略等)
- 过程元数据(依赖关系、执行状态、执行日志等)
5 质量元数据
描述数据质量的一类元数据。通常情况下,是通过定义一系列质量指标反映数据质量。
6 操作元数据
描述数据是如何进行使用的一类元数据。
- 数据产生(产生时间、作业信息等)
- 表访问(查询、关联、聚合等)
- 表关联(关联表、关联字段、关联类型、关联次数)
- 字段访问(查询、关联、聚合、过滤等)
7 运维元数据
描述系统运维层面的元数据,通常包括任务类、报警类及故障类。
8 成本元数据
描述数据存储及计算成本的元数据。
- 计算成本(CPU、MEM等)
- 存储成本(空间、压缩率等)
9 标准元数据
描述数据标准化内容的元数据。
- 代码管理(转换规则、对外接口等)
- 映射管理
- 数据展示(样式、规则、语义、单位等)
10 安全元数据
描述数据安全内容的元数据。
- 安全等级
- 数据敏感性(是否敏感、脱敏算法等)
11 共享元数据
描述数据是如何共享的部分,包括接口方式、格式、内容等。
业务元数据
1 模型元数据
数据建模,是一种对业务的描述,通过模型可更好地了解业务。常见的建模方式有范式模型、维度模型、多维建模等。下面以维度模型为例进行说明。
- 业务线、板块、过程
- 数据域、主题域
- 维度、属性
- 指标
- 事实、度量
- 集市与应用
2 应用元数据
描述数据应用类的元数据。
3 分析元数据
从数据分析角度,描述业务的元数据。
- 数据域、主题域
- 产品线、板块、业务过程
- 业务流程
- 业务规则
4 管理元数据
描述企业内部,数据管理相关内容。
- 人员
- 流程
- 职责、岗位
- 组织、部门
码表与维度表概念
码表是 编码表(或代码表)的简称。
- 编码表:
是一种代码说明表格。``用来帮助用户明确无解释数据和字符 代码的含义。
例如:性别码表的值为男和女。类似于数据字典。
以性别代码表为例:
sex | value |
---|---|
1 | 男 |
2 | 女 |
想获得一个性别为男的值只需要设置sex.id=’1’就可以了。
- 维度表
简单的把维度表理解为对某类事务粒度的抽离及细化。
维度表中的取值,可以通过group by取出。
- 从另一个角度去区分事实表和维度表,
存放业务数据的是事实表。
从事实表中抽象提取出的和业务无关的表就是维度表。
数据仓库最常见的维度表是时间维度表
- 维度表的特点:
是抽象提取出的、和业务无关、很少变化的表。
- 那么维度表的作用,也不难总结:
可以非常有效的减少事实表的占用空间。
占用空间减小,在分析数据时,做表的扫描,效率也会大大提升。
对事实表中数据的取值做了规范。方便统计和查询。
- 维度表的管理
一般,某个字段可以抽象出有限个数的取值,都可以建立维度表。常见的维度有时间,地点,职业等等。
维度表在数据仓库中应该有单独的一层:dim 层[dimension]
数仓中常见名词
修饰词
修饰词是对指标起修饰作用的形容词,用来描述指标的业务过程和状态的词,是组成指标的元素。比如’支付宝支付的’、’新增的’等。
dataphin中组装修饰词分为2种
- 完全自定义,产生全新的修饰词
- 现有修饰词组合,选择已有的修饰词进行组合成新的修饰词
实体
实体是我们分析的一个对象,一个挂载了多个业务过程的载体。
看的见的实体:比如:苹果手机近半年的销售量,实体就是苹果手机。
虚拟实体:虚拟的业务活动,比如:618活动、违法等。
维度
dataphin中介绍维度:人们观察事物的角度,是指一种视角,是确定事物的多方位、多角度、多层次的条件和概念。
粒度
粒度是数仓中选择业务过程分析时的一个基本概念
从表的角度出发,粒度就是什么情况下会增加一条记录。需要注意的是,一定程度下,粒度越细,支持的分析就越细致。
维度和粒度的关系
- 维度有层级结构,不同层级对应不同的粒度
- 维度的组合越多,粒度可能越细细
- 数据粒度划分策略一定要保证:数据的粒度确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的一个准则
主题域
主题域划分是基于整个业务过程中有哪些实体,整个业务过程的抽象和整合。抽象是指实体抽象,整合是对业务流程的划分整合。主题域的划分离不开业务过程,但是业务过程并不一定是主题域。
口径
口径是需求统计的范围。比如:统计近一个月A商品的销售量,近一个月和A商品就是对应需求的统计口径。
度量
度量是业务流程节点上的一个数值。比如:成本、单价等。
事实表中的度量可分为三类:完全可加,半可加,不可加。
完全可加的度量是最灵活,最有用的,可进行任意维度汇总;
半可加的度量可以对某些维度汇总,但不能对所有维度汇总,比如:库存可以按照地点和商品进行汇总,按照时间维度汇总库存实则毫无意义;
还有一种是完全不可加的,例如:转换率。一般来说,这类完全不可加事实通常可以拆解落地到可加度量。
指标
指标是口径的衡量值,即根据指定口径最终产出的结果,比如:最近七天支付宝支出额度大于10000的男性人数。指标分为:原子指标、派生指标、衍生指标。
原子指标
基于原表的业务事实就能得出的指标,通常不可再分,比如:某订单支付金额。
派生指标
由于有的时候,有些指标不能基于原表事实直接得出,需要经过一些简单逻辑操作,这个时候就有了派生指标。
派生指标 = 原子指标 + 维度 + 修饰词,比如:店铺近1周订单支付金额,近一周事一个时间修饰词,支付金额是一个原子指标。
衍生指标
顾名思义,就是衍生出一个新的指标,通常是多个指标经过转换计算。
比如:电商行业中计算转化率的时候,CVR = (转化率 / 点击量) * 100%,当计算衍生指标每天A商品的转化率的时候,拆解成两个指标:1.每天A商品的实际下单量 2.每天A商品的点击量(用户点击查看A商品的次数)。
标签
基于实体的一些维度,结合一些指标,衍生指标深加工出来的非实体属性
- 静态标签
- 比如:基本的信息和属性标签,比如:性别、身份证号
- 动态标签
- 业务系统标签(根据业务过程划分主题域来看,不同的主题域可以加工出很多客户维度的标签),比较典型的比如:余额,是一个动态的过程。
- 行为标签,比如:访问、点击、登记、跳转等等
维度退化
退化维度(Degenerate Dimension),就是那些看起来像是事实表的一个维度关键字,但实际上并没有对应的维度表。本质上就是针对高频使用的、业务并不是太边缘的维度适当退化到事实表,减少关联,提高查询效率,前提是不能影响核心模型的性能和产出时效性。
通用架构
ODS(近源层 / 原始数据层)
- 理论上不会对源数据做任何处理 。根据具体公司的需求 , 可能会在ods层之前加一个stage层,将数据缓冲到stage层,ods做一些加工处理
- 数据构成:业务数据 + 外域数据 (+ 爬虫数据+埋点等多个异构数据源融合)
- 主要职责:同步数据、清洗、保留历史数据,解耦业务数据(同步工具:Datax / Sqoop等等)
- 依赖:dwd层和dim层都是基于ods层加工得出
DWD(明细数据层)
划分主题域,构建事实表和维度表
主题域:主题域划分是基于整个业务过程中有哪些实体,整个业务过程可以抽象成几个大类,以此来划分,比如常见的主题域:营销、用户、流量。大家不用过多纠结于数据域和主题域的区别,个人认为可以当成一样理解,减少理解成本,而且主题域划分的时候通常会有一级主题域、二级主题域、三级主题域等,已经体现出自上而下的层级或者说子集关系。
DWS(汇总数据层)
- 基于DWD明细数据汇总整合
- 指标体系后续会提到(比如:指标体系和主题、分层之间的关系等等)
Dim(公共维度层)
- dim层存放的是一些业务事实或者实体的一些维度信息,比如:地区,货币形式等等
- 关系:dim层和dwd,dws层是一个横向的关系,dim层其实是横跨dwd层和dws层的。比如:dim层可以和dws层关联支持app层应用。同样,dim层也可以和dwd层去关联支持dws层的一些分析
ADS(应用数据层)
- 存放应用层指标,支持一些分析系统,比如:报表,数据产品
- 进行宽表的组装
- 业务研发的缓冲层:当新的业务需求入手,但是dws层没有相应的逻辑和指标,这个时候可以根据应急程度在ads层先揉合一张表应用,当反馈效果较好时,再进行拆分,落到核心模型和扩展模型
常用系统缩写
OA(office automation) 办公自动化
HRM(human resource management) 人力资源管理
SRM(Supplier Relationship Management) 供应商关系管理
PLM(Product Lifecycle Management) 产品生命周期管理
MES(maufacturing execution system) 制造执行系统
APS(Advanced Planning and Scheduling) 高级计划和安排
MRP(Material Requirement Planning) 物质需求计划
OMS(order managment system) 订单管理系统
CRM(Customer Relationship Management) 客户关系管理/CSM(Customer Success Manager) 客户成功经理
ERP(Enterprise Resource Planning) 企业资源计划
OTC(Over-the-counter) 场外交易市场
ISC(Integrated Supply Chain) 集成化供应链
IPD(Integrated Product Development) 集成产品开发
IDM(Intelligent distribution management) 智能分销管理
EAI(Enterprise Application Integration) 企业应用集成
IDC(Internet Data Center) 互联网数据中心
VPN(virtual private network) 虚拟专用网
WMS(Warehouse Management System) 仓库管理系统
OEM(Original Equipment Manufacturer) 原始设备制造商
QMS(Quality Management System) 质量管理系统
ODM(Original Design Manufacturer) 原始设计制造商
IQC(Incoming Quality Control,来料检验)
IPQC(In-Process Quality Control,制程检验)
FQC(Final Quality Control,成品检验)
OQC(Out-going Quality Control,出货检验)
AMQ(Adaptive Message Queue) 消息中间件
DB,数据库
DW,数据仓库,保存的是数据再不通时间点的状态
DM,以某个业务应用为出发点而建立的局部DW,DW只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用给,每个应用有自己的DM
ods 原始数据层 存放原始数据,保持原貌不做处理
dwd 明细数据层 对 ods 层数据清洗(去除空值,脏数据,超过极限范围的数据)
dws 服务数据层 轻度聚合
ads 应用数据层 具体需求