阿里云云原生一体化数仓 — 数据建模新能力解读
分享人:阿里云智能 产品专家 闫建丽
没来得及看直播的同学,可以观看直播回放。
直播回放:https://developer.aliyun.com/live/249656
DataWorks智能数据建模-产品建设背景
2009年,DataWorks就已经在阿里巴巴集团立项,支撑阿里巴巴数据中台建设,一路见证阿里巴巴大数据建设之路。2020年之前,DataWorks支持的是开发视角、自底向上、小步快跑,快速满足业务需求为首要目标的数仓构建模式,然而随着内部数据模型越来越多,线下评审流程越来越复杂,淘宝、天猫、盒马、菜鸟等多个数据仓团队开始和DataWorks合作,构建DataWorks智能数据建模产品,支持业务视角自顶向下的规范化数仓建设,也可以支持传统的开发视角、自底向上的数仓构建模式,真正做到规范化、可持续发展地构建数据仓库。2021年云栖大会,DataWorks智能数据建模正式发布,在阿里巴巴集团内各个业务团队投入生产,并在阿里云上服务世界500强亿滋中国等众多客户。
DataWorks智能数据建模-业务痛点
在智能数据建模产品正式发布之前的这十多年时间里,阿里巴巴的各个数仓团队实际上并不是不需要进行数据建模,而是采用线下excel建模评审的方式在开展这一项工作,流程本身非常规范,模型的上线及变更有着非常严格的评审流程,但即使如此,线下建模还是有它的弊端存在。线下建模的弊端主要体现在三大方面:规范定义、模型设计、数据开发。
从规范定义方面来讲,存在的主要问题是:
数仓规范与模型设计分离,符合规范的模型设计对建模师本身的要求非常高,既要能把业务需求高度抽象进行模型设计,还需要牢记规范的点点滴滴。
数据指标定义效率低,且指标的数据加工逻辑分离,过去传统的单个创建指标效率相对低下,且无法保证指标的唯一性,指标的加工逻辑和指标定义本身也存在脱节的情况,最终导致指标真实口径无法统一,进而带来了大量的针对指标结果数据不一致的对焦工作。
应用层缺少规范,大多数应用层的建设都面临需求多变、需求开发时间紧、任务重的特点,也对应用层模型规范的管理带来了非常高的挑战。既要能够满足业务需求,又要能够符合规范,其实很难再短时间内完成这些工作。
从模型设计方面来讲,存在的主要问题是:
纯人工的模型设计效率低下,比如要在excel里做模型设计,并且需求在excel里做维护。
从数据开发方面来讲,存在的主要问题是:
模型设计和物理表开发分离,模型设计是模型设计,物理表开发是物理表开发,很有可能会造成物理表开发逻辑与模型设计理念存在或多或少的差异情况。
此外,本地建模,还会存在着一些隐藏的问题,如文件管理混乱、硬件设备故障、工作交接难等问题。
DataWorks智能数据建模-业务价值
数据建模作为数仓规范,最大的受益者是企业自身,但企业的价值需要通过一线研发人员的工作得以体现。对于一线研发同学来讲,智能数据建模能为大家带来的最大的好处是提效,相比传统的纯开发或者线下建模线上开发的工作方式来说,智能数据建模能为大家带来更加更加高效的建模和研发方式。由此,帮助企业做好企业数据体系的规范化建设,让数仓规范真正能落到实处。企业数仓规范真正做好以后,能为企业沉淀大量的体系化的核心数据资产,同时,也能顺其自然地为企业节省大量的存储和计算成本。
DataWorks智能数据建模-数据建模方法论
众所周知,维度建模和范式建模都是目前大家所熟知的建模方法论,两种建模方法论,各有各的优势,也有各自的劣势,这里不对两种方法论进行展开介绍。阿里巴巴集团大多数数仓团队面向的业务又多具备高速发展、变化迅速、海量数据的业务特点,故以维度建模为主。智能数据建模产品由于它是生于阿里,长于阿里,所以我们也是基于维度建模方法论进行的产品建设,但也不是说智能数据建模完全不体现模型关系,DataWorks智能数据建模产品也会提供关系设计及展示相关的产品功能。
DataWorks智能数据建模-数仓分层
一般来说数仓会分为三大层,ODS、CDM、ADS。
其中ODS,又称为贴源层。ODS主要用户存储业务系统同步来的业务数据。一般情况下,我们不会对ODS层的数据做过多的加工,以便于后续在ADS和CDM数据出错时的溯源。换句话说,ODS不是数仓同学设计出来的,是对业务系统数据的直接同步。
数仓建设最最重要的公共层CDM层,CDM层需要对业务进行高度抽象,需要具备通用性、易用性、复用性,因此,公共层的建设对数仓同学的要求是非常高的,既精通建模方法,同时也对业务情况了如指掌。CDM层再进行细分,一般会分为DIM层-维度表,DWD层-明细数据表,DWS层-轻度汇总层。
数仓建设最难管但管好了效果非常明显的应用层ADS层,ADS层主要面向业务进行模型设计。因此,大家一定要先了解清楚模型的主要应用场景,是普通的报表分析,还是数据产品的调用等等,不同的应用场景,模型设计需要考虑的因素也不一样。如果规范化ADS层,需要建设的表会减少,通过统一逻辑去查询,会使计算和存储成本降低。
DataWorks智能数据建模-名词释义
•业务分类:业务板块是某一大类的业务的指标和维度的集合,如电商,文娱;
•数据域 :数据域是指一个或多个业务过程或者维度的集合,如交易域,日志域;
•业务过程:业务过程指企业的业务活动事件,如下单,支付;
•数据集市:面向某个应用场景或者产品的数据组织,一般会依赖数据公共层;
•主题域:将数据集市按照分析视角进行切分,比如在电商行业,通常分为会员、交易、商品等;
•维度:维度是用于分析数据的一个角度,一方面对维度进行可控管理,另一方面指导维度表的设计,如地理维度,时间维度;
•维度属性:维度属性隶属于一个维度,用来描述维度的属性,如地理维度中的国家名称,省份名称;
•时间周期:时间周期是用来明确数据统计的时间范围或者时间点,如最近30天,自然周;
•修饰词:修饰词是对指标统计业务范围的划定,指除了统计维度外指标的业务场景的限定抽象,如PC端,无线端;
•原子指标:原子指标是一般不可再细分的度量,原子指标命名=业务过程+度量。,如支付金额,访问人数;
•派生指标:派生指标直接用于汇总表的字段,派生指标由原子指标、时间周期、修饰词(可选)组成,如最近1天海外买家支付金额。
DataWorks智能数据建模-一级产品功能
DataWorks智能数据建模产品分为四大板块,分别是数仓规划、数据标准、维度建模和数据指标。其中数仓规划、数据标准和数据指标最终都为维度建模服务。
DataWorks智能数据建模-二级产品功能
数仓规划是数仓的顶层设计,包含分层划域、维度管理、建模空间。从产品定义来讲,这些内部并不复杂。难点在于数仓怎么根据业务场景来划分。建议先用思维导图画好,有了一个大概雏形之后,再录入产品。其中一个重点功能是可视化的表名检查器配置,检查器用于规范目标分层中表的命名,将同一分层中表名称的命名格式统一,便于通过表名称,即可了解到该表所属的业务类型、作用功能、数据粒度等信息。同时,可以帮助减少后期的运维成本。系统默认创建的数仓分层和自定义新建的数仓分层均可以配置数仓分层检查器。对于建模同学来讲,建模效率会提升且产出的内容符合规范。
数据标准包含数据标准、标准代码、度量单位、命名词典。数据标准和标准代码设置好之后,可以和模型字段做关联,关联之后模型字段名称、值等都需要符合标准的设置。
数据指标包含派生指标、原子指标、修饰词、时间周期。这里重点需要说明批量创建指标,勾选构成派生指标的原子指标、修饰词、时间周期,就可以生成一系列派生指标,用于模型设计。指标创建好后有两个作用,一是可以把指标批量导入到模型里面,作为模型的字段存在。另一个是模型字段已经存在,需要跟指标做关联。这样在物化之后可以找到指标对应的是哪个模型。
维度建模支持正向建模和逆向建模。
逆向建模解决的是已有数仓冷启动的问题,主要用于将其他建模工具生成的模型反向建模至DataWorks的维度建模中。例如,当已通过其他建模工具生成模型,此时,想更换为DataWorks的智能建模进行后续建模工作,则可以使用逆向建模功能。该功能无需再次执行建模操作,即可快速将已有模型反向建模至DataWorks的维度建模中,节省了大量的时间成本。
正向建模支持可视化建模、excel导入、多语言建模。可视化建模类似网页版excel的方式,把模型字段信息统一管理。在这个过程中,可以复用已经存在的物理表表机构,提升建模效率。多语言建模支持DDL、自研FML方式建模。
建议先用可视化建模,如果需要修改字段,可以用DDL或者FML方式做字段的修改。在建模过程中,设置里某一字段为主键字段,非空字段,或者关联了数据标准里的标准代码,DataWorks智能数据建模可以一键自动生成质量规则。
当把模型发布到引擎中比如MaxCompute生成环境,可以自动生成一段数据开发的简代码。
DataWorks智能数据建模-数仓规划
数仓规划的整体架构如下,首先看中间部分业务分类,比如阿里的业务分为天猫、淘宝、菜鸟等等。也可以根据各个数仓团队面向的业务来划分。公共层分为三层,也就是上文讲到的DWS、DWD、DIM。DMI下需要区分数据域,维度表只需要分到数据域就可以。明细表需要细化到数据域和业务过程。轻度汇总层只需要指定到数据域就可以。在应用层这一部分主要是ADS层,在实际工作中可能不止有ADS层还会有DIM层。产品侧是支持大家灵活设置,如果有需要可以自行创建。ADS层需要指定到具体的数据集市和主题域。这是模型在分层化域时需要考虑到的一整套体系。如果数仓团队负责多个业务,多个工作空间,需要复用同一套数仓规范,可以使用一下建模空间功能。建模空间是当需要管理多个DataWorks工作空间且需要复用一套数仓规划时,面对跨多个工作空间的复杂数据体系,可以通过设计空间来共享一套数据建模工具,针对整个数据体系进行统一的数仓规划、维度建模及指标定义等工作。
DataWorks智能数据建模-逆向建模
逆向建模如下图所示,可以选择表所在项目空间,表名匹配规则需要指定是模糊匹配还是精准匹配,在指定表命名规范后,会根据这些关键词来检测表,匹配规范,最终成功生成模型。
DataWorks智能数据建模-正向建模
正向建模支持创建维度表、明细表、汇总表等。基本信息版本主要是分层化域以及表名的自动生成。字段管理部分可以从数据指标导入派生指标,从表/视图导入,可以基于已有的物理表或视图把表结构同步,其中字段可以自定义设置,不关注字段可以隐藏起来,本质上是一个excel操作。当模型已保存后需要修改可点击代码模式进行修改。
DataWorks智能数据建模-数据开发简代码
简代码支持根据建模信息自动生成ETL简代码,代码中模型信息包含:模型分层化域基础信息,模型字段中英文,建模依赖的物理表表名及字段名,模型的关联表关联表字段信息等;数据开发同学只要基于此代码进行casewhen ,where条件等业务信息的补充即可。
DataWorks智能数据建模-数据指标
下图左侧为筛选原子指标、修饰词、时间周期。右侧为在批量选择完后,会自动生成能够生成的指标,黄色代表指标没有生成,绿色代表指标已生成。
DataWorks智能数据建模-数据标准
数据标准会支持字段标准,会对日常用到的一些词语,做一个标准定义。标准代码是对字段值有要求。数据标准还有度量单位和命名词典。当这些内部定义好之后,维度建模过程中都可以做关联,如果是关联了标准代码,可以自动生成质量规则。
DataWorks智能数据建模-多引擎支持
DataWorks智能数据建模-售卖与价格
DataWorks智能数据建模目前已经开放售卖,最小规格(small)有首月199元试用活动,欢迎大家开通试用体验。https://dw-common-buy.data.aliyun.com/
注:智能数据建模需要搭配DataWorks增值版本使用,增值版本-专业版目前也有首月1元活动
注:计费区间的对象数量不等于所有表数量,主要指各类模型表与指标的数量,具体计数详情参考帮助文档或者智能数据建模产品首页。
更多 阿里云大数据产品>>