开发者学堂课程【智能数据建模训课程 :客户案例:数仓规范化-菜鸟数据模型管理实践(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1223/detail/18312
客户案例:数仓规范化-菜鸟数据模型管理实践
四、 总结&展望
1. 菜鸟数据模型管理建设成果
上述是在建模过程中比较核心的共同点以及遇到的问题,实际上建模平台合作研发有一年多的时间,现在已经集成了很多功能,从创新性上来说,第一个把数仓规范和建模实操衔接,以前的规范不再像是挂在墙上的告示一样,有的人遵守,有的人不遵守,此时通过此建模平台可以把建模规范和建模实操衔接起来,提供了多种提效的便捷开发功能,多表克隆, Excel 的操作等等,使用此平台不会影响研发效率。第三个是不同视角的大图,从研发的视角,从业务方使用的视角提供一些大图的功能。
菜鸟整个实验下来,实际上有六点可能是其核心价值。首先从规范性的角度来说,辅助数据体系的规范化建设能让规范落到实处,同时全部逆向明细层模模型数据,另外是降本方面,上述提及过,末端的业务实际上在使用建模平台时需要进行逆向,在逆向时会发现很多历史的,不规范的表,或者需要合并的一些表,或者已经没有下游访问的表,实际上此时可以让此模型下线,物理表删除,脚本保留,整个过程中末端业务大概下限了15%的模型表,因此降本的方面效果比较明显。第三个是沉淀,建模是把线下的过程搬运到线上,有助于我们沉淀核心资产同时还能提效,减少了人员沟通成本,提升了研发效率,取得了多种提效的并列开发功能。实际上使用此工具并不会影响效率,整体上来说,末端的使用过程中提效大概占比30%左右,接下来是多样性,实际上数仓建设的过程中,有的时候是自下向上,有的时候是自上向下,即面临不同的场景,从0~1规范化建设,但是在开发过程中有一个小的需求等等,可能是一个逆向开发的过程,都可以在此建模平台上实现。然后就是,末端和公共团队都在全员使用,计划每年菜鸟都会全力使用此数据建模平台。
菜鸟数字数仓团队从2020年开始与 Dataworks 团队不断共建智能数据建模产品,从最初版简单地录入系统到集成逆向建模,多表克隆、多种引擎的代码模式,Excel 交互模等功能,极大的提升了建模规范和研发效率,成为菜鸟落地数仓规范的统一平台。
2. 建设成果展示
如下图是整个建设过程中菜鸟的一些建设成果,即之前提及到的分层划域等。
3. 菜鸟数仓管理体系建设计划
如下是建模平台中最终希望集成的功能,即数据模型健康评估体系。从五个角度展开,第一个是研发的规范性,包括命名规范,注释规范,SQL 使用规范,数据类型规范;第二个是数据质量,主键规范,数据波动,数据异常,比如今天的表可能有十条数据,明天有100条数据,此波动是否在合理的业务波动范围内,数据是否有异常,还有变更测试,工单处理;第三个是计算存储健康分,是否简单加工,无下游,模型表是否是长周期,长周期即表的生命周期,有些表日常的访问范围可能是近三个月的数据,但是若保留了近10年的生命周期,此时可以调整其生命周期,数据倾斜;第四个是稳定性健康分,稳定性健康分对这块影响较大,因为菜鸟对整体数仓产能是基线机制和值班机制,基线是否破线?延迟是否告警?如此会影响值班过程,当前的起夜率,当前受伤出现的问题,出现的延迟,还有是外部依赖;第五个是通用性健康分,包括复用度和完善度,复用度是模型表下游访问情况怎么样,完善度是表的描述是否丰富,当业务人员拿到表之后是否可以理解,还有是模型的血缘相似度等等。此上是后续在数仓建设中希望搭建的整体模型体系。
基于以上来促进模型的升级迭代,最终实现模型管理的目的。
4. 提问回答
在评论区随机抽取问题,首先第一个问题是:“如上建模是基于 Dataworks 做定制开发吗?”老师回答:“内部版本和外部版本大体共同点是相同的,内部版本有一些特定的功能,但是两者做了很多共件,主要还是使用工具为主。”
第二个问题:“历史数据有变动的情况下每一层应该如何处理?”老师回答:“对于数仓而言,历史数据的波动实际上是不可避免的,比如快递业务来说,物流始终是在变化的,世界上收藏中 DI 表是一个全量(每一次全量或每一次增量),对于历史上变化非常频繁的建议做一次全量表的设计,如果说数据变化不是特别频繁,比如只最近90天在变动,实际上可以做一个每次增量,每次增量不只更新昨天的数据,而是更新近90天的一个数据,这可以根据自己的业务波动情况去选择合适的设计。”
第三个问题:“模型是如何打分的?怎么控制数场SQL规范?开发人员写 SQL 容易出现跨层依赖?”老师回答:“ Dataworks 提供了很多检查器的功能,其实致力于开发检查器的功能,可以监测到很大一部分的数据问题,第一是如何检测规范,第2个是如何评估模型好坏,上述提及是从5个方面阐述,主要是以规范和成本,后面要看模型的稳定性和通用型,其实模型打分是从这几个维度综合起来的。打分的目的是让模型的负责人不断的完善模型,没有模型打分,很难推动模型负责人去完善,因此要基于这几个维度对模型做一个综合评价。”
第四个问题:“正向数据模型只是建表结构吗?那建模后如何灌入数据以及如何与宽表数据进行打通?”老师回答:“其实正向建模并不是只建一个表结构,实际上建模过程中要经历三个阶段,一个是概念,一个是逻辑,一个是物理,这三个阶段并不是只建一个表结构,或者只建一个模型,需要把模型进行物理化。模型物理化之后,让这张表进行数据灌输,因此不能单单理解正向建模是一个数据建模过程,后续还有很多 ETL 开发功能在里面,补充说明:建模首先需要管控模型,其代码是两件事,首先要保证模型的健康情况,比如模型是否有跨域情况,是否有不稳定的字段,不稳定的数据,设计者主要是希望保证前期在模型的设计上,每张表的定义上,每张表的含义是什么,这是需要了解到的,后续脚本的开发与模型是前后关系,先有模型,后有脚本上的开发。”