开发者学堂课程【DataWorks 一站式大数据开发治理平台精品课程:3.DataWorks 数据模型介绍及实践】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/81/detail/1229
3.DataWorks 数据模型介绍及实践(二)
三、DataWorks 开发、治理模式的演变
1、DataWorks 开发、治理模式的演变(宏观)
从前:基于 DataWorks 的数据生命周期一更 重视事中、事后治理。
(1)把数据搬上云
- 离线(批量)数据同步
- 实时数据同步
(2)生产数据
- 全可视化代码开发与依赖配置
- 离线开发、实时开发
- 多引擎混编工作流
- 千万级复杂周期调度
(3)使用数据
- 应用:生成API连接应用, (分析系统。报表。大屏) 数据回流。
- 分析:Web端表格透视、数据探查,基于Hologres的即席分析。
2、DataWorks 开发、治理模式的演变(宏观)
从前:规范化、专业化的数据开发方法。
(1)DataWorks 此前已经支持基于决策体系的授权模式,DataWorks 允许不同职位的人员扮演不同的 DataWorks 角色,每个人各司其职,以共同完成安全规范的数据开发流程。
(2)这个是已有的数据开发流程,在 DataWorks 的标准模式空间下,开发人员在开发前会先完成对代码的开发提交和冒烟测试,测试无误后再由更熟悉业务的第三方或者第三人,比如运维部署或者是管理员,还没有被提交的代码,如果确认这次提交的代码不会影响业务系统的稳定性,并且符合业务的预期,那么就可以执行发布到生产环境引擎,开始周期调度运行,以产出数据。
(3)在发布数据建模后,对 DataWorks 又新增一类角色为模型设计师,被授予该角色的人员可以登陆 DataWorks 数据建模的模块,专门负责模型的开发。
四、演示与实操
第一个 demo 是通过创建企业的数据标准建设模型,然后再通过规范化的流程将模型下发到计算引擎的步骤。第二个demo展示如何将引擎中的模型逆向提取到的建模工具中,并且通过修改以后再下发回引擎的案例。
1、第一个 demo,目前支持的客户端除了有网页版,还有 windows 本地版本,打开的数据标准模板,先构建企业的数据标准。
可以看到已经有几个数据标准,新增客户身份证号,先进入编号,标准主题和一级二级分类都是不变的,跟第一个标准是一样的,中文名称输入客户身份证号,英文名称输入 identification number,英文缩写也就是数据标准的字段名称,定义为idnum,同时在业务定义这一栏输入对身份证号的描述,数据类型把它定义为STRING,保存关闭数据标准,从页面导入数据标准到的模型库中,以便于后续建模引用这些数据标准。
可以看到定义的11个数据标准就都已经导入进来,这种定义和导入数据标准的方法非常适用于企业要批量定义大规模数据标准的情况,一次性就可以将大量的数据标准都导入到模型库里,供各个开发人员去使用,打开本地的模型工具,输入用户的IP信息。可以先查看导入的标准是否成功,点击同步更新按钮。可以查看到这几个标准就是刚才在一个校中定义,并且导入到网页版的模型库中的标准,身份证号也就是刚才自定义的那个 idnum。由于建模流程比较繁琐,所以直接导入已经建立好的模型,通过拖动导航框,可以查看到整个模型的全貌,那选择其中一个模型,也就是 customer 模型,跳转到当前的模型页面,通过引用数据标准的形式为它定义身份证号类的字段。首先先点击选项,勾选应用数据标准时,所创建的字段会继承标准的数据类型以及英文所写,也就是字段名,确定。
这样就可以编辑模型的字段,右键选择编辑字段,点击新增字段,字段类型和字段名称是不需要人为去定义的。
只需要搜索到刚才创建的身份证号标准就可以,可以看到字段名称以及字段类型都已经自动生成。点击确定。把创建修改好的模型保存到的模型库中,选择当前的工作空间名称,为这个模型做重命名,把它命名为 sakila_ maxcompute demo,点击保存。在客户端中的模型已经保存到模型库中,打开模型管理库,把已经保存的模型示为线上,右键点击分支选择属性,把状态从dev带到prod,需要注意prod并不是真正意义上的把模型发布到生产环境的计算引擎,这步流程实际上是在模型设计人员将模型设计完成后,由其他人员对模型进行评审,评审无误后就可以把它作为prod阶段,也就是上线阶段。
创建完成后,再回到 DataWorks的datastudio,刷新,这时模型就会显示到的datastudio 模型管理这一栏中,双击主题就能查看到完整的关系图,找到刚才编辑过的那个模型,可以看到idum字段就已经显示在这个地方。
将整一个模型提交到的开发环境的计算引擎中,点击提交选择计算引擎的项目名称,是否会涉及到需要删除的表,这里就涉及到 max compute 的引擎特性,maxcompute引擎不支持直接删除字段和修改字段的。如果用户在模型管理页面对字段进行删除或者修改,当他到 datastudio 提交模型时,被修改过字段的那张表就会先被删除再被创建。如果表中是已经存放的数据的,就要多加小心,很有可能造成数据被误伤无法找回的情况,点击下一步。
所有的物理模型就被转换成ddl语句,这些语句都是会最终下发到引擎内部的,如果确认无误就勾选并且点击提交。
当前页面会展示所有提交的日志,如果时间太长,可以点击确认,然后到左下角的日志按钮那查看提交执行的进程,稍等片刻,提交就执行成功了。
进入到任务发布页面,把ddl语句都发布到生产环境的引擎中,需要注意的是在步骤是需要空间管理员或者部署运维角色进行操作的,普通的开发决策人员是没有权限操作这一步的,而这一步也至关重要。
发布审批人可以点击查看, review所有的ddl语句是否符合预期,如果符合预期就可以选中发布包,然后点击发布选中,那么所有的ddl语句就被发布到生产环节的引擎进行执行。可以在发布包的列表查看发布是否成功。
最后创建临时查询任务验证已经发布到引擎的表是否已经创建成功,输入show tables。可以搜索修改过的 customer 表,可以看到确实已经创建成功,第一个 demo 结束。
2、第二个demo,第二个demo展示的是将已有的数据模型从计算引擎中提取出,进行一系列的编辑操作后再重新下发回用计算引擎中去。首先打开的客户端工具,选择逆项数据库,选择 maxcompute,点击下一步填写maxcompute的公网地址以及云账号的ak信息。找到想要提取模型的maxcompute的项目名称,回到客户端工具页面,在数据库填写 maxcompute 项目的名称 lzz_test001,点击测试连通性,测试成功,进行下一步。开始进行模型的提取,稍等片刻,引擎中的模型就可以提取到工具中。可以通过整个导航查看模型的全貌,可以看到有100多张表,搜索找到 custom 表,跳转到这张表的页面,再去编辑它的字段,现在要做的操作是删除添加的 idnum 字段,选中它后,直接点击删除,确认。这时需要将已经删除 idnum 字段所在的整个模型,重新保存到模型库中,重新取名字,点击保存。再次打开模型库,将保存的新模型改为 prod 状态。
回到 datastudio 模型管理页面,刷新就能找到模型,能找到操作过的 custom 表以及另外两张表,同时把这三张表提交到开发环节的引擎中,选择刚才那个引擎,进行下一步,可以看到,页面提醒告诉如下两张表会先进行删除,请评估是否要继续进行操作,和上一个 demo 中强调的是一样的。maxcompute 的引擎不支持删除字段和修改字段的,如果用户在模型管理工具中去修改或者删除某个模型的表或者字段,那么当他返回 DataWorks 去提交模型时,就会提醒用户这张表将会先被删除,然后再被创建,里面已有的数据都会被删除掉,所以要谨慎操作。如果确认无误,点击下一步,这时所有的ddl语句都生成了,可以看到首先是 drop table 的语句,紧接着是 custom 语句,点击提交,稍等片刻,提交就可以成功。查看日志,可以看到整个操作是成功的,进入到发布页面,这时需要有空间管理员或者运维部署决策进行操作,直接点击发布,把所有提要的所有ddl语句都发布到生产环境的引擎中,稍等片刻后,再进行数据验证,仍然是打开刚才的那个临时查询,输入desc lzz test001 customer 执行,执行完成,查看 idnum 的字段还在不在,刚才那个字段已经被删除,至此 demo 演示完成。