开发者学习笔记【阿里云云数据库助理工程师(ACA)认证:10分钟快速构建云原生数据仓库(二)】
课程地址:https://edu.aliyun.com/course/3112080/lesson/19066
10分钟快速构建云原生数据仓库(二)
四、如何基于 AnalyticDB 快速构建数据仓库
基于 ADB 去构建数据仓库的体系可以分为几块,第一个数据从原始的生产数据包括 IoT 的数据,以及一些第三方的数据,这些数据源经过数据抽取然后清洗集成,集成到数据仓库里面。在数据仓库里面可以进行一个数据面向主题的数据建模,数据建模以后经过多层次数据的转化跟建模过程之后,然后应用在线上的生产里面。
线上生产可能主要面向几块,第一种就是面向业务决策上面的数据分析、报表以及业务赋能,另外一个还可以面向数据交易以及数据分享的数据服务,整个各基于 ADB 构建的数据仓库体系。
(1)数仓分层
ADB 内部如何进行数据的输仓分层
数据源数据库/日志/大数据
Oracle/DB2 MysQL SQLServer PostgresQL MongoDB PolarDB SLs/OSS/OTS Hadoop
数据实时同步数据传输服务 DTS
DataworksT+1 周期集成
第三方工具 Kettle/OGG
数据贴源层 ODS 层 必须构建 未经过处理的原始数据 结构与源系统保持一致
数据加工处理
公共数据层 CDM 层 非必须构建 DIM,维度表,例如会员表 DWD,明细事实层,基于业务过程构建的细粒度明细事实表。例如商品交易表 DWS,轻度汇总事实层基于应用及指标需求构建的轻度汇总指标事实表。例如,商品日交易额明细表。
数据加工处理
数据应用层 ADS 层 非必须构建 存放个性化的统计指标数据
数据源经过一些数据集成工具,比如阿里云上面的数据传输服务 DPS 或者是离线的 T+1 周期集成可以去 Dateworks 一些第三方的工具将数据集成到 ADB,ADB 内部数据的原始数据存储在数据的天元层简称 ODS 层,在 ODS 层存储的云端数据源是基本上是未经处理的一些原始数据的存储,而且整个结构跟语言系统保持一致。ODS 的数据可以经过数据的处理加工,加工成中间的公共数据层,在公共数据层里面的数据一般会分为几层,一种是维度表,维度表一般就是例如会员、商品、数据这种数据量相对来说偏小,但是又在最后的分析里面,是经常会作为一个维度数据进行交叉分析的数据,一般放在维度表里面。
第二个是明细表,明细表一般都是基于企业的业务过程,比如企业下单产品过程就是订单的数据,是业务过程当中构建的一些明细的事实表,基本上是每一笔订单都可能在里面会存储一条记录,另外一个是轻度的汇总成,轻度的汇总成叫 DWS 层,例如最终要加工出来的业务要用的数据可能是商品的交易额或者订单的交易额,在 DWS 层可以是每天做一次清度的汇总,也是每天的订单交易总额、每个月或者每七天的交易总额。在ADS 是最后面向业务使用的结果数据,可以基于上层去构建 BI 报表或者是大屏,或者在业务里面去做一些业务的公共决策,包括数据交易全部称为 ADS 面向结果直接可用的数据,例如可能要做的结果数据是商品交易额,在 ADS 层可能就是存储的商品交易额,比如要求做到每个月有一个点的趋势表,变成每个月一条记录的商品交易额,这个是整个数仓业界比较常见的数仓分层模型。数仓需要详细分层的核心还是在于最后面向业务层的需求是多样化的,不可能让每个业务线自己或者每个应用自己去开发一套数据的处理过程,为了简化数据的开发、复用的能力,像公共数据层 CDM 去构建一个公共的数据层,然后上层业务根据自己的个性化的统一需求或者业务需求去构建自己差异化的 ADS层,通过建模过程把一些通用的公共的一些能力建设可以变成一个统一的工作,去节省整个数据的开发工作量,同时也能够保证整个开发口径的一致性。
(2)数据仓库构建流程
需求分析
明确业务板块 明确业务过程
定义业务
定义业务板块 定业务过程
梳理指标
原子指标 衍生指标
数据梳理
定义 ADS 层 定义 CDM 层
梳理数据源
梳理 ODS 层表,定义表来源
比如企业要构建数仓的过程中,可以按照上面的流程去梳理整个企业构构建数仓每一层需要产出的一些数据。
首先要基于面向业务,面向最后主题的需求分析倒推去梳理最终需要构建 ODS 层、ADS 层,包括 CDM 层的一些数据,比如需要明确业务的板块,例如是电商的板块、金融借贷的板块、还是物流的板块,要明确里面的业务板块是哪一块。
第二个是明确业务过程,因为业务板块是非常多的,比如在电商里面可能涉及到了商品的生产过程,还有订单的下单过程,会员的注册过程,里面的业务过程非常多,要明确需要行数据分析的业务的业务过程是什么,就定义好业务过程,你才能去分析这些业务过程涉及到的哪些数据有哪些。
那例如我们可能是一个订单的下单过程,那第二个的话就是我们需要定义好这个业务过程之外,我们明确好了业务需求之后,就定义好业务板块跟业务过程,然后根据业务需求去梳理出来里面需要产出的业务指标是什么,业务指标就是业务的一些需求,比如最重要的产出是商品交易或者某个商品交易订单金额的一个变化趋势图,或者是某个商品在某个区域交易金额的变化趋势,这些里面涉及到一些指标,在指标里面有一些是可以分为原子指标跟衍生指标,原子指标是不可再分的,衍生指标一般是从原子指标里面经过经过一些限定词的限定之后,然后获得了衍生类的指标,比如原子指标是电商里面所有的商品交易额,可能是每天的交易额,衍生指标可能是要 a 品牌 a 商品的交易额趋势,所以衍生指标是经过一些限定词从原子指标里面去生产加工出来的,企业需要去定义好原子指标跟衍生指标,根据原子指标跟衍生指标比如电商商品的交易和的趋势,就可以知道需要商品每个交易订单交易额的金额,包括衍生指标里面的一些限定值,比如对应的一些商品的品牌属性、商品的种类属性、商品的名称属性,这些数据都是需要的,所以根据这些数据可以梳理出来最终需要的 ADS 层、CDM 层以及原始的 ODS 层的数据是需要哪块,建议数仓构建的过程是从业务数据分析需求倒推出来,去梳理想要的数据来源。
基于 ADB 来构建的时候也是用原始数据,然后通过像用 DPS 的数据实时传输,把原始数据在 ADS 里面、ADB 里面去构建它的 ODS 天元层,然后天元层的数据经过数据加工整合可以构建出一个数据公共层,然后根据面向个性化的统计指标需求去构建 ADS 层。
(3)ODS 层的实时数据准备
一键打通数据源到 AnalyticDB 的数据链路快速构建数据仓库 ODS层。
核心价值 :
一键同步数据库及业务日志
数据实时同步更新,无延迟
减少 ETL 开发工作量
阿里的 ADB 是支持通过 DTS 将原端的日志数据以及业务生产数据实时的集成到 ADB 里面去构建 ODS,比如企业只要在 ADB 里面去使用一键建仓功能,选择好要集成的数据源的 id,然后配置好要集成到哪个数据仓库里面,点击确定会一键自动的构建起来。
面向日志数据也是一样的构建过程,所以阿里云的 ADB 构建程非常简单,数据进入到 ADB 里面之后,需要应用一些调度开发品牌,比如 Dateworks、Dataphin 或者 DMS 的一些数据管理开发调度平台,就可以把数据进行二次的加工整合,整合成 CDM 以及 ADS 层的数据。在 CDM 层当数据进入到 ODS 层之后,需要经过一些初步的预聚合,聚合成 CDM 层,涉及到如果要做离线的聚合调度,做实时的计算可以去调度开发平台,比如可以在里面去配置加工的一些逻辑,然后去做一个任务的编排,配置任务调度的开发能力,去实现 CDM 的构。
数据加工以及开发跟最后产出的衍生指标和原子指标非常强相关的,加工之后的数据又可以重回到 ADB 里面的 CDM 层。
五、一个基于 AnalyticDB 构建数据仓库的示例
某电商公司 X,销售各种品牌的服装。其订单表如下:
假设业务上需要统计 A 品牌服装每天的销售总额,那么上述案例相,
前面讲的是业界在数仓构建过程当中的方法论,以及基于阿里云的 ADB 构建数据仓库目前常用工具,包括数据传输 DPS 以及数据管理 DMS,去构建 ODS、CDM 以及最后的 ADS 层。以电商维度简单介绍前面所说的各种业务板块、业务过程之类到底具体对应到业务里面是什么东西。
例如这里是一个电商公司的订单数据,就要做一个订单金额、销售额的数据分析来做经营的决策辅助,这里面企业有很多订单表,还有各种买家卖家维度、商品维度的各种维度表的一些数据,拿订单表的原始数据来做参考,比如订单 ID 对应的订单里面的买家是谁,买家姓名商品 ID 是什么,购买的数量、支付的金额是什么。
假设需要统计 a 品牌服装每天的销售总额是最后统计的衍生指标,a 品牌的销售总额整个建仓模型就是参考下面,里面的业务板块讲的是电商业务,业务过程讲的是下单购买比较简单,要针对的是下单购买的数据去做一个最后的数据建仓,然后里面的维度因为统计的是 a 品牌,所以它的维度就是品牌维度,品牌一定要放进去,业务原子指标是销售总额,因为衍生指标要统计 a 品牌销售总额,所以要对衍生原子指标进行一些限定,业务限定是服装品牌为 a 品牌,时间周期是一天,所以通过业务限定加时间周期就可以从原子指标拿到产出的衍生指标,可以知道需要把一些订单数据,品牌的维度数据去同步到数据仓库进行原子指标以及衍生指标的架构。