如何完成‘祖传数仓’的标准化治理
如果无法正常显示,请先停止浏览器的去广告插件。
1. 如何完成‘祖传数仓’的标准化治理
n
o
l
a
S
h
c
e 黄伟伦
T
T
M 2022年6月22日
美团到店事业部
2. 个人介绍
S
h
c
e
T
T
M
美团技术专家
n
o
l
a
2017年加入美团,负责数据报表、数据治理以及实时
计算应用建设,对数据治理工具建设有较丰富的经验。
3. 目录.CONTENTS
n
o
l
a
1. ‘祖传数仓’的治理的挑战点
S
h
c
e
T
T
M
2. 治理方案&实践
3. 未来展望
4. 关于‘祖传’这件事
为什么不同行业中‘祖传’的评价有天壤之别?
S
h
c
e
T
T
M
程序员眼中的祖传
n
o
l
a
‘神医’眼中的祖传
在技术快速发展的时代,我们不是在解决祖传的问题,就是正在创造问题
5. 到餐数仓建设历史
增长期
业务
阶段
数据
需求
多业务组合提升收入
固定场景分析 多业务多场景分析
固定维度租户核心指标监控
垂直建设
应用数据
数仓
建设
治理
手段
交易数仓
应用数据
xx数仓
应用数据
结果数据 结果数据 结果数据
明细数据 明细数据 明细数据
业务数据 业务数据 业务数据
被动治理
小团队内部针对问题进行复盘与单点治理
精细化运营+创新业务
n
o
l
a
任意指标维度高效分析,智能技术反哺业务
标准化建设 集市化建设
技术架构,模型设计,指标管理统一标准
应用 应用层-按需建设
B1 主题宽表-聚合宽表
B2
B3
ODS
自助分析+诊断建议
多指标多维度多框架分析
S
h
c
e
T
T
M
统一方案多个团队垂直建设
流量数仓
发展期
成熟期
单业务快速提升市占
集市汇总-全场景加工
轻度汇总-全流程汇总
多维明细-全业务数据整合
面向主题设计,引擎升级
应用系统
统一查询服务
统
一
维
度
OLAP
多主题集市 统一维度
离线数仓 实时数仓
系统明细-多系统数据整合
数据缓冲层
主动治理
专门团队进行长期治理规划,过程中沉淀经验,
标准和系统
自动治理
通过策略配置对关键流程实现自动化完成,同
时元数据服务作为能力独立服务业务系统
6. 什么是‘祖传数仓’?
S
h
c
e
T
T
M
元数据质量差
n
o
l
a
数据使用难
代码质量差
数据不可信
架构扩展成本高
缺少测试&监控
‘祖传’数仓的特点
运维成本高
业务问题
7. 元数质量的挑战点
支持团队多,发展周期长
服务多10+个团队分析需求,共建设
n
o
l
a
1200+指标维度,其中40%存在冗余定义
S
h
c
e
T
T
M
元
数
据
体
系
团队
财务
销售
C端产品
B端产品
…
如何用一套语言,描述不同团队的需求?
8. 代码质量的挑战
模型定义质量挑战 模型开发质量挑战
历史包袱重:历史模型数量过万,字段十万+需要
进行标准化改造 定义质量差引发连锁问题:错误的命名导致对模型
层级主题的误判,最终数据流向混乱
专业词汇多:领域专业词汇翻译的能力要求,远超
通常技术科班水平 现有累计问题多:治理前每月数据不一致等CASS
20+,出现过S3级故障。
S
h
c
e
T
T
M
历史长
x
规模大
=
n
o
l
a
更大的问题
9. 架构扩展性&测试的挑战
架构扩展性挑战
性
能
要
求
测试&监控质量质量挑战
实时性
查询速度
成本
n
o
l
a
端到端的测试能力不足:现有方案针对单点作业
进行测试监控,发现问题后,通知用户快速止损
能力不足。
S
h
c
e
T
T
M
需求场景
性能要求不断提高
离线
计算
实时
计算
HIVE
Spark
Streaming
模型多交叉测试难度大:对于使用者2个产品
结果不一致是易感知的错误。但对于开发者
和其他模型对比却是容易忽略的测试点。
SPARK
Storm
Flink
?
数据湖时代
OLAP
MySQL
Kylin
技术方案不断更新
Doris
10. 目录.CONTENTS
n
o
l
a
1. ‘祖传数仓’治理的挑战点
S
h
c
e
T
T
M
2. 治理方案&实践
3. 未来展望
11. 如何保障元数据定义准确
明确指标维度分级分类
明确指标的定义构成
n
o
l
a
基础指标 = 主题 + 业务过程 + 量化对象 + 度量 + 汇总方式
如:交易额 = 交易 + 支付完成 + 订单 + 金额 + 求和
S
h
c
e
T
T
M
衍生指标=基础指标 + 维度修饰 + 统计周期
如:美团小程序交易额 = 交易额 + 流量应用维度修饰 +周期(天可省略)
计算指标=指标通过运算得到
如:美团小程序交易额占比=美团小程序交易额/交易额
12. 如何保障元数据定义准确
通过总线矩阵合并确保不同视角对业务拆解的结果一致
数据委员会
商家主题
客户转化过程拆解(AIPL)
S
h
c
e
T
T
M
统一业务过程
过程1
用户主题
销售主题
用户转化过程拆解(AARRR)
商户签约过程拆解
多主题拆解业务过程
n
o
l
a
统
一
维
度
维度1
维度2
维度3
过程1
过程3
✅
✅
商家指标体系
用户指标体系
✅
✅
总线矩阵统一维护业务过程与维度关系
销售指标体系
采用相同规范定义多种指标体系
13. 如何保障元数据定义准确
通过规则库确保相同构成指标中文名称一致可读
指标构成
因子
修饰词排序
S
h
c
e
T
T
M
排序规则
固定规则
时间先后,业务递进规则
ID排序规则
根据指标业务分
类匹配命名规则
n
o
l
a
命名规则库
指标省略规则:新客用户数->新客数
业务类型省略规则:到餐PV数->PV数
重复省略规则:交易在线门店动销门
店门店数->交易在线动销门店数
。。。。
统一
命名
14. 如何保障元数据定义准确
系统展示
S
h
c
e
T
T
M
n
o
l
a
15. 模型定义质量保障
模型命名规范
字段命名翻译过程
n
o
l
a
通过词库切词
S
h
c
e
T
T
M
中文
匹配字段库中的信息
词根+固定命名+计量词
指标字段名 = 对应英文_对应英文_对应英文
如何建设词库支持全部指标的翻译?
16. 模型定义质量保障
字段库初始化过程
模型与字段命名
信息
S
h
c
e
T
T
M
人工更新词库
分
词
器
否
词
库
高频词
分词是否
正确
低基数维数表
通过现有模型信息初始化词根库
n
o
l
a
高频中文词
是
词根
候选
高频英文词 固定命名
候选
高频结尾词 记量词
候选
人
工
筛
选
17. 模型定义质量保障
字段库迭代过程
查询模型
负责人
S
h
c
e
T
T
M
不完全匹配
进行匹配
进行分词
现有模型
字段
分词
结果
发送工单
人工判断是
否新增词根
专业审核
n
o
l
a
添加词根
标记命名
不规范
字段库
完全匹配
高频组合
加入固定命名
统计字段
频次
更新词根翻译
统计字段
英文定义
完全匹配字段
名 频次 加入固定
命名
品牌名 10+ ✅
BG编号 20+ ✅
是否纯新签门店 5+ ✅
中文词
外卖
翻译结果 频次 推荐采用
waimai 200+ ✅
wcd 1 takeout 10
18. 模型定义质量保障
工具化管理
S
h
c
e
T
T
M
词根管理工具
n
o
l
a
命名工具
19. 数据开发质量保障-特定主题数仓生产线上化改造
难点挑战
业务背景
1. 销售:服务商家的前线部队,3000+,多团队
2. 政策:销售的奖金激励方案,多考核模式,精细到业务动作
多团队
地面
CKA
大客
战略
大客
电销
预订
渠道
多角色 多模式
BD 收入模式
BDM
CM
销售管理者
hunter-BD
hunter-BDM
farmer-BD
farmer-BDM
城市
合作商
技术问题
1. 不准确:2019年 Case:3个
2. 效率低:人力投入多:27PD/月
场景组合多:团队*角色*模式后每月生产上百个ETL模型
S
h
c
e
T
T
M
目标模式
系数模式
阶梯模式
返还模式
定价模式
稽查模式
n
o
l
a
变化频次快:提成策略每月一次大迭代,月中10次小迭代
开发时间少:数据必须在工资发放前完成计算验收
解决方案思考
主题限定:只限定一个主题内的数据,意味着维度+业务过
程可枚举,依赖基础指标范围可确定。
历史积累多:规则不断变换,但也积累了大量已知加工逻辑,
20. 数据开发质量保障-特定主题数仓生产线上化改造
规则抽象分类
SQL拼接正确
计算指标分类 计算规则抽象
基础指标 聚合逻辑,WHERE条件
上传指标-系数 建立临时表,条件拆分与合并
上传指标-阶梯 JOIN 指标,JOIN BD 信息,取得系数
复合指标-加减 FULL JOIN
LEFT JOIN,JOIN顺序(维度数递减)
复合指标-判断 CASW WHEN、FULL JOIN
复合指标-聚合 聚合逻辑
复合指标-偏移 版本控制(封账月份最新版本)
方案指标 LEFT JOIN BD 信息,再 LEFT JOIN 计
算
手写SQL
SQL 规范校验(业务规范,语法规范)
n
o
l
a
a
S
h
c
e
T
T
M
复合指标-乘除
调度执行正确
DAG调度计算
元
数
据
b
f
c
x
d
用户指标配置
1. 变更同步:a 配置信息变化,所有下游同步
2. 链路检测:d 变更一个粒度,自动发起下游试算,x 计算失败提醒
3. 链路约束:f 有下游依赖,禁止下线
指标调度计算
1. 指标依赖约束:计算指标上游完成时,下游才可以开始计算
2. 计算版本约束:每次计算版本唯一,保证数据不覆盖。
21. 数据开发质量保障-特定主题数仓生产线上化改造
风险分析
故障预防
流程监控
外部依赖风险监控
计算进度管理
指标
配置 系统界面
调度
计算 系统界面
Crane
监控分类
信息交互
MySQL
调度策略
Mafka 任务提交
状态回调
Mafka
调用成功率,集群稳定性
Mafka 稳定性监控 消息丢失率,分区倾斜,分区存活
MySQL 稳定性监控 主从延迟,SQL执行成功率,TP999
数据表创建
数据计算SQL
状态提交
外部依
赖风险
Crane
Mafka
MySQL
心跳更新,资源启动,资源死亡
监控分类
Spark
监控内容抽象
信息交互 有结果返回率,系统可用性,TP999
计算调度 DAG 调度检测通过率
SQL 拼接成功率
Executor
1
Executor
2
Executor
3
外部依赖
SOP预案
稳定产出
自身风险监控
执行引擎(Spark)
任务接收
兜底预案
n
o
l
a
Crane 稳定性监控
Spark 稳定性监控
指标计算
外部依
赖风险
监控内容抽象
S
h
c
e
T
T
M
计算调度
逻辑拼接
自身风险
故障发现
SQL语法正确率
指标计算
SQL 执行数据存在率
SQL 多次执行结果一致率
代码回滚
代码BUG
SOP预案
数据回滚
手写 SQL
数据导入
22. 代码质量提升-特定主题数仓生产线上化改造
方案实施
S
h
c
e
T
T
M
n
o
l
a
• 通过产品实现自助配置化生产
• 对可预见的计算公式通过规
则自动代码生成
• 预先生产好结算主题下可用的指
标维度数据
23. 代码质量提升-特定主题数仓生产线上化改造
系统配置化生产
S
h
c
e
T
T
M
n
o
l
a
24. 技术架构高扩展-逻辑模型抽象
数据系统
数据系统
多种协议配适不同引擎
应用
数据
n
o
l
a
T统一查询协议
应用表1
应用表2
S
h
c
e
T
T
M
应用表3
MySQL
Kylin
Doris
Presto
Kylin
MySQL
人工创建多种同步任务
数据
集市
Doris
Presto
逻辑集市
集市表1
集市表2
Spark+Hive
新引擎
建模工具配置化创建
维度数据
实时集市表
集市物理表1
数仓
生产
应用表3
应用表2
应用表1
存储
引擎
应用3逻辑模型
应用2逻辑模型
应用1逻辑模型
Flink+Kafka
Spark+Hive
集市物理表2
Flink+Kafka
集市实时表
新架构
25. 指标一致性验证
应用口径一致性验证
S
h
c
e
T
T
M
n
o
l
a
26. 端到端指标波动监控
配置指标监控
系统展示指标异常以及原因
产品异常展示
异常指标特殊展示
人工处理更新原因
监控异常项
一致性监控
S
h
c
e
T
T
M
波动监控
按需要为应用
配置监控任务
应用指标查询口径
n
o
l
a
27. 目录.CONTENTS
1. 数仓治理的挑战点
S
h
c
e
T
T
M
2. 数据治理系统架构演进
3. 未来展望
n
o
l
a
28. 未来规划
智能搜索
减少人工识别工作
用
户
产
品
研
发
找数据
对话
智能机器人
S
h
c
e
T
T
M
知识库
提需求
算法模型
建模模型
搜索
词
n
o
l
a
推荐产品查询
识别意图
智能匹配
推荐指标维度
字段库
元数据
推荐建模方案
根据采纳率迭代算法模型
29. n
o
l
a
Q&A
S
h
c
e
T
T
M