开发者学堂课程【云原生一体化数仓新能力解读课程:数据建模能力新解读】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1193/detail/18111
数据建模能力新解读
内容简介:
一,背景知识
二,DateWorks 智能数据建模的核心产品能力
三,产品购买方式
主要介绍 DateWorks 智能数据模的核心产品能力和产品购买方式。介绍产品功能之前,先为大家介绍一些相关的背景知识。
一,知识背景
2009年,DateWork 已经在阿里巴巴集团立项,Hadoop 集群规模已经高达 1000台。其中 DateWorks 作为 DateWorks 子模块之一的智能数据建模产品是在 2021年逾期大会时做的新产品正式发布。在2021年之前,DateWorks 支持的是开发视角自底向上,小步快跑,能够快速满足业务需求为主要目标的数仓构建模式;2021年数据建模发布之后,DateWorks 可以支持业务视角自顶向下的规范数仓建模,也可以支持传统的开发视角自底向上的数仓构建模式,真正做到规范化,可持续发展的构建数据仓库。
在智能数据件建模产品正式发布之前,阿里巴巴的各个数仓团队并不是不去做数据建模,而是采用的线下造建模评审的方式去开展一项建模工作。该流程本身非常规范,并且模型的上线以及变更有着非常严格的评审流程。但是,线下建模还是存在很多问题,线下建模的弊端主要可以从三个方面去讲:规范定义,模型设计和数据开发。
1,规范定义
数仓规范与模型设计分离,符合规范的模型设计,建模式本身要求非常高,建模需要既要能够把业务需求高度抽象进行模型设计,还需要能够牢牢记住制定好的数仓规范里面的所有细节,否则,制定出来的模型会不符合规范的。
数据指标定义的效率比较低。指标的数据加工逻辑和指标的定义是分离的,过去传统的单个创建指标的种创建方式效率比较低下并且没有办法保证指标的唯一性。
指标的加工逻辑和指标定义本身存在脱节的情况,这会导致指标的真实口径无法统一,带来大量的针指标结果数据不一致的交工作,最终就会有大量的沟通工作存在。
应用层缺少规范,大多数应用层的建设都会面临需求多变,需求开发时间紧,任务重的特点,这应用层的模型规范的管理带来了非常大的挑战。既要能够满足业务需求,又要能够符合规范,在短时间内很难去完成这些任务。
2,模型设计
纯人工的模型设计方式,工作效率会比较低下,这相当于在 excel 里面去做各种模型设计,并且在去 excel 里面去做维护等等。
3,数据开发
模型设计与物理表的开发分离。模型设计是模型设计,数据开发式数据开发,最后导致数据开发的逻辑和模型设计的理念或多或少的会存在一些差异。
此外,除了刚才的三点以外,本地建模还会有一些隐藏的问题存在,比如,当文件足够多的时候,管理就会存在很混乱的情况;也会存在,电脑坏了,硬件设备坏掉了或者被偷掉;本地建模以我的文件管理的方式,在做工作交接的时候也会存在很大的不变性,会有丢失的可能性。
二,数据建模简介
1、业务价值
前面讲了数据建模的问题,下面讲一下智能数据建模的产品的业务价值。
数据建模作为数仓规范本身来讲,最大的受益者是企业自身,
但是企业的价值如果想要去实现,必须要通过一线研发人员的价值来体现。对于一线研发同学来讲,数据建模能够为大家带来的最大的好处就是工作效率的提升。相比传统的纯开发或者是线下建模,线上开发这种工作方式为大家带来的是更加高效的建模和研发的工作方式。由此,能能进一步帮助企业去做好企业数据体系的规范性建设,让数仓规范的好处真正落到实处。
其次,当企业规范数仓规范真正做好以后,能为企业沉淀大量的系统性的核心数据资产。同时,也能够降低企业大量的比较昂贵的计算成本和存储成本。
2、数据建模的方法论
现在市面上主流的有范式建模和维度建模,但产品实际上是采用的基于是维度建模方法论去做的,本质上跟所处的环境是有关系的。阿里巴巴大多数业务,在过去的发展过程中,既是高速发展的,又是变化多端的,同时也是数据量非常大,是海量数据的业务特点。阿里巴巴的数仓团队在面临业务情况的基础之上,大家选择了用维度建模来去做主流的方法建模方法论,因为数据建模,本质是阿里巴巴自演的一款产品,生于阿里,长于阿里。基于阿里本身的特点,产品会围绕维度建模方法论去做产品建设。尽管如此,也不是说完全不会去体现一些模型的关系相关的东西,会去提供一些关系的设计,还有关系的展示产品功能。
3、数仓分层的的工作方式
一般来讲,会把数仓分层分为三大层,ODS,CDM 和 ADS,那其中 ODS 又称它是贴源层,ODS 主要是用于存储业务系统同步来的业务数据,一般情况下不会ODS 的数据做过多的加工,方便后续在 ADS 和 CDM 数据出错的时候能很快并且能够准确的速源。换句话说,ODS 不是数仓同学设计出来的,而是直接业务系统的同步。
CDM 实际上是数仓建设过程中非常重要,也是最最重要的一层,
通常称为公共层,CDM 需要业务进行高度的抽象,需要具备通用性,应用性,复用性。因此,公共层的建设数仓的同学要求是非常高的,这些同学既要具备非常精通的建模方法,同时也要业务的情况非常熟悉。CDM 在做细分的时候,一般会分为,有 DM(维度表),有 DWD (明细数据层),DWS (汇总表)
ADS 通常讲叫应用层,它是说在数仓的整个范围内是最难管的,但是,管好了之后的效果非常明。做过数仓的同学应该有印象。因为 ADS 层有非常大量的表存在,一般业务分析同学用的频率也是最高的,这一层如果是规范起来,那需要建设的表就会变少。查的时候,可以统一用统逻辑去查,它的存储和计算成本会降低很多,但是,ADS 虽然用的最频繁,主要面向业务,但这并不意味着模型很好设计,在模型设计之前也需要去了解清楚的应用场景,因为不同的业务场景模型的设计的要求是完全不一样的,它不比比 CDM 轻松,
下图名词解释,这里就不做过多介绍,大家在使用产品的过程中,在的产品界面上也会有一些介绍,具体每个定义,是意思,怎么使用,这些在产品上也都会有提示的。
三,DateWorks 智能数据建模的产品功能。
下面介绍一下 DateWorks 数据建模的产品。
智能数据建模是阿里巴巴 DateWorks 团队自主研发的。产品模块有数仓规划,数据标准,维度建模和数据指标四大板块。其中数仓规划,数据标准和数据指标三大板块最终都是为维度建模去提供服务的,智能数据建模最终的出口实际上都是在维度建模板块里面。
这里除了刚才讲到的的四大板块,后面是一些更细的模块。
数仓规划本身产品的定位
例如:数仓的顶层设计里面公共层应该怎么划分,应用层应该怎么划分,业务分类怎么划分,主要是这样,产品功能从产品使用上来讲并不复杂,难点在于数仓到底应该怎么去划分,例如;业务板块应该怎么去划分,数据怎么划分……这是真正难的地方,建议大家先把它先划分好后有自己的雏形了,再录入到产品里面来。
同时,这里要强调一下,可视化的表名检查器配置,这可以支持大家把日常的数仓规范管理到产品里面来,并且能够跟着具体每一层,它能够针对具体的层,比如DWD 层应该表明什么符合规范,有几个推荐的表明规范,包括的指标,名称的规范等等,都可以在里来维护。维护好之后,在最终纬度建模的时候,实际上可以根据架构师所设定好的表明检查器以及用户所选的这些,例:数据,业务过程,业务分类等等,可以自动去生成表名,对于建模的同学来讲,建模效率是会提升,并且能够保证是说产出的东西符合规范。,因为日常工作中经常会碰到这种情况:非常痛苦的定好规范后,但是最终在用的时候,很容易忘记,或者每次在做的过程中要去翻一下字典来看一下规范到底是什么,这样,工作效率非常低下,导致传统建模的时候没有办法按照规范去建模,最终管理规范的同学有些难过,团队也不会很愉快。
使用 DateWorks 后,建模不需要回忆规范是什么,就能够建出按照规范的要求生成的。
数据标准
数据标准主要能够支持到有数据标准的设置,标准代码的设置,有度量单位的设置和命名词典的设置。数据标准和标准代码在里设置好之后生成的模型,可以和的模型字段作关联的,关联之后,模型字段的名称,它的值等等,都需要去符合标准里面的设置。
数据指标
数据指标里比较有特色的是的批量创建指标,批量创建指标的时候,只用去勾选所需要的原子指标,修饰词,时间周期,就可以离开耳机去生成一系列指标,并且生成的指标还能够显示哪个指标是系统里面已经存在的,那些指标是还没有生成的。指标生成之后不存在,就是说不占用计算资源总组资源。因为没有物化,这时,可以先批量去创建一些指标用于模型设计。指标创建好后有两个作用:可以把指标批量导入到模型里面来作为模型的字段存在;模型字段已经存在,模型的普通词段需要跟指标做关联。最终在物化后,需要去分析指标时,可以找到指标对应的具体的是哪个模型,哪个物理表,物理表中的哪个字段,它的指标定义和最终的逻辑就能够统一。
维度建模
维度建模能支持到有正向建模和逆向建模。
逆向建模主要解决的是已有数仓的能启动的问题。如果一家公司已经做了很多年的数仓,但是没有建模,没有模型,但现在企业发展到一定比较稳定的阶段之后,希望能把模型管理起来,做好成本控制,还有效率提升等等,这就需要用逆向建模功能去把已有的物理表通过表明去做精确匹配或者是模糊匹配,把它能够逆向回来,把它的模型管理起来。
正向建模
正向建模会支持可视化建模。可视化建模实际上类似于网页版 excel 的方式,可以把的模型字段信息能够统一管理起来,在管理的过程中很大的特点是可以去用已经存在的物理表的表结构。这能够极大的提升建模效率并且不会出错,并且在后续再去生成数据开发的代码的时候有很大的帮助作用。
举个例子,一张明细表 DWD 表的模型的设计,多数情况下需要去参考 ODS 业务表的表结构,传统的做法,把 ODS 表的表结构复制一份,再去生成,再去把里面的代码改一下,改成我现在的明细表,但是发现话,除了有 contrl c,contrl v 操作以外,最后改到哪个来自于哪个都不知道。但是通过产品化的方式,首先能够把字段轻松的能够拿到当前的模型里面来,不需要做很多的 contrl c,contrl v,只要点一下你所需要那张表名就可以。其次,在改完操作的所有的字段之后,还能够知道当前的模型的字段来自于原来 ODS 表的哪张表的哪个字段都可以知道。在推荐大家在新建模型的时候,尽量去使用可视化建模,这种方式的效率会非常高。同时,可以把平时批量创建好的指标作用于模型字段来使用,这对于建模的效率的提升有非常大的帮助。
多语言建模
多语言建模可以支持到有各种的 DDL 的方式去建模,还有 FML ,是自言的一种建模语言 。如果购买产品之后,大家也可以试一下,它本身建模语言会非常简单,那传统的 Max Compute DDL , Hive DDL 也是可以支持的。建议先用可视化建模,如果有需要修改字段的,那可以用种 DDL 的方式,或者 FML 的方式去做字段的修改。根据收到反馈,这种效率组组合的方式去做模型设计效率会特别高,大家喜欢用 Excel 去建模的传统的工作方式不太好改变。
也支持把模型设计好之后直接导入进来,模型设计好之后,可以同时会有几张操作:直接把模型物化发布到各个各种引擎上,比如说支持到 maxcomputer 等等都可以支持;在建模过程中,设置了某字段为主间字段,非空字段,或者关联了数据标准的标准代码,那产品可以一键去生成质量规则;当把模型发布到某个引擎,比如发布到 maxcomputer 的引擎之后,可以提供会自动帮去生成一段数据开发的简代码,为什么智能数据建模可以在帮助大家提升建模效率的同时,也能去提升研发效率。