回顾 | 阿里数据中台建模

阿里中台的概念,可以说是近些年来的颇为火爆的概念。从十余年前的阿里在内部完成这一过程,并提出了“中台”概念;到后面中台概念逐步被外部接受并在2019年爆火兴起。数据中台爆火背后,既有传统企业转型焦虑的市场东风,又有阿里中台战略示范效应的推波助澜。下图为阿里中台架构(图片来自网络),其内置“大中台、小前台”的战略,其中包含了业务中台和数据中台的双中台配置。

从本质上来说,中台概念更多是一种方法论。它来告诉用户如何构建数据化服务体系,包括从数据集成、数据建模、数据开发、数据共享到数据质量、数据治理等。用户可以阿里云或其他中台产品去快速构建,也完全可以自主完成这一过程。本文就尝试从数据建模为切入点,描述如何完成这一过程。文中部分内容来自《阿里中台》一书和阿里云官网文档。

1. 数据建模概述

     

1).建模意义

  • 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。

  • 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。

  • 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。

  • 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

2).模型方法论 - OLTP vs OLAP

  • OLTP系统面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题

  • OLAP系统面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能,因此它需要采用一些不同的数据建模方法。

3).数仓建模方法论

  • ER模型

    其建模本质是是从全企业的高度设计一个3NF模型,用实体关系(ER)模型描述企业业务,在范式理论上符合3NF。

3NF - OLAP vs OLTP

OLAP中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。

建模步骤

  1. 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。

  2. 中层模型:在高层模型的基础上,细化主题的数据项。

  3. 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。

  • 维度模型

    维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。

建模步骤

  1. 选择业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。

  2. 选择粒度。在事件分析中,要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

  3. 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。

  4. 选择事实。确定分析需要衡量的指标。

2. 维度建模规范

     

下面以维度建模作为理论基础,构建总线矩阵、划分和定义数据域、业务过程、维度、度量/原子指标、修饰类型、修饰词、时间周期、派生指标。整体遵循下面的建模规范。

1).概念层次

2).概念解读

  • 业务板块

    业务板块是逻辑空间的定义,是基于业务特征划分的命名空间

  • 数据域

    指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个个不可拆分的行为事件。在业务过程之下,可以定义指标;维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。

  • 业务过程

    指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件,通俗地讲,业务过程就是企业活动中的事件。

  • 时间周期

    用来明确数据统计的时间范围或者时间点,如最近30天、自然周、截至当日等。

  • 修饰类型

    是对修饰词的一种抽象划分。修饰类型从属于某个业务域,如日志域的访问终端类型涵盖无线端、PC端等修饰词。

  • 修饰词

    指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在日志域的访问终端类型下,有修饰词PC端、无线端等。

  • 度量/原子指标

    原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。

  • 维度

    维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包括国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

  • 维度属性

    维度属性隶属于一个维度,如地理维度里面的国家名称、国家ID、省份名称等都属于维度属性。

  • 派生指标

    派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。如原子指标:支付金额,最近l天海外买家支付金额则为派生指标(最近l天为时间周期,海外为修饰词,买家作为维度,而不作为修饰词)

3).指标体系(指标组成体系之间关系)

  • 原子指标

    原子指标、修饰类型及修饰词,直接归属在业务过程下,其中修饰词继承修饰类型的数据域。

  • 派生指标

  1. 派生指标由原子指标、时间周期修饰词、若干其他修饰词组合得到。

  2. 派生指标唯一归属一个原子指标 ,继承原子指标的数据域, 与修饰词的数据域无关。

  3. 派生指标可以选择多个修饰词,修饰词之间的关系为"或"或者"且",由具体的派生指标语义决定。

  4. 派生指标要继承原子指标的英文名、数据类型和算法要求。

3. 维度模型设计

     

1).模型架构图

  • 操作数据层(ODS)

    把操作系统数据几乎无处理地存放在数据仓库系统中。

  1. 同步:结构化数据增量或全量同步到底层存储。

  2. 结构化:非结构化(日志)结构化处理并存储至底层存储。

  3. 累积历史、清洗:根据数据业务需求及稽核和审计要求保存历史数据、清洗数据。

  • 公共维度模型层(CDM)

    存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成;公共指标汇总数据一般根据维表数据和明细事实数据加工生成。CDM层又细分为DWD层和DWS层,分别是明细数据层和汇总数据层,采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提高明细数据表的易用性;同时在汇总数据层,加强指标的维度退化,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。其主要功能如下:

  1. 组合相关和相似数据:采用明细宽表,复用关联计算,减少数据扫描。

  2. 公共指标统一加工:基于OneData体系构建命名规范、口径一致和算法统一的统计指标,为上层数据产品、应用和服务提供公共指标;建立逻辑汇总宽表。

  3. 建立一致性维度:建立一致的数据分析维表,降低数据计算口径、算法不统一的风险。

  • 应用数据层(ADS)

    存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生成。

4. 模型实施过程

     

1).数据调研

  • 业务调研

    要构建大数据数据仓库,就需要了解各个业务领域、业务线的业务有什么共同点和不同点,以及各个业务线可以细分为哪几个业务模块,每个业务模块具体的业务流程又是怎样的。业务调研是否充分,将会直接决定数据仓库建设是否成功 。

  • 需求调研

    需求调研的途径有两种:一是根据与分析师、业务运营人员的沟通(邮件、IM)获知需求;二是对报表系统中现有的报表进行研究分析。通过需求调研分析后,就清楚数据要做成什么样的。很多时候,都是由具体的数据需求驱动数据仓库团队去了解业务系统的业务数据,这两者并没有严格的先后顺序。

2).架构设计

  • 数据域划分

    数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。业务过程可以概括为一个个不可拆分的行为事件,如下单、支付、退款。为保障整个体系的生命力,数据域需要抽象提炼,并且长期维护和更新,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中或者扩展新的数据域。

  • 构建总线矩阵

    在进行业务调研和需求调研后,就要构建总线矩阵了。需要做两件事情:明确每个数据域下有哪些业务过程;业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。

3).规范定义

规范定义主要定义指标体系,包括原子指标、修饰词、时间周期和派生指标。上面也做了详细说明,此处不做展开。

4).模型定义

模型设计主要包括维度及属性的规范定义,维表、明细事实表和汇总事实表的模型设计。

  • 维度设计

    维度是维度建模的基础和灵魂。在维度建模中,将度量称为"事实",将环境描述为"维度",维度是用于分析事实所需要的多样环境。维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。维度的作用一般是查询约束、分类汇总以及排序等。

    维度的设计过程就是确定维度属性的过程,如何生成维度属性,以及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库易用性的关键。正如Kimball所说的,数据仓库的能力直接与维度属性的质量和深度成正比。设计步骤:

  1. 第一步:选择维度或新建维度

    作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。以淘宝商品维度为例,有且只允许有一个维度定义。

  2. 第二步:确定主维表

    此处的主维表一般是ODS表,直接与业务系统同步。

  3. 第三步:确定相关维表

    数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性

  4. 第四步:确定维度属性

    主要包括两个阶段,其中第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。

  • 事实表设计

    事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。

  1. 粒度

    事实表中一条记录所表达的业务细节程度被称为粒度。

  2. 事实类型

    作为度量业务过程的事实,一般为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型。

    * 可加性事实,是指可以按照与事实表关联的任意维度进行汇总。

    * 半可加性事实,只能按照特定维度汇总,不能对所有维度汇总,比如库存可以按照地点和商品进行汇总,而按时间维度把一年中每个月的库存累加起来则毫无意义。

    * 不可加性事实,还有一种度量完全不具备可加性,比如比率型事实。对于不可加性事实可分解为可加的组件来实现聚集。

  3. 事实表类型

* 事务事实表

用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为"原子事实表"。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不能更改,其更新方式为增量更新。

* 周期快照事实表

以具有规律性的、可预见的时间间隔记录事实,时间间隔如每天、每月、每年等。周期快照事实表的日期维度通常记录时间段的终止日,记录的事实是这个时间段内一些聚集事实值或状态度量。事实表的数据一旦插入就不能更改,其更新方式为增量更新。

* 累积快照事实表

用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点,当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,而且这类事实表在数据加载完成后,可以对其数据进行更新,来补充业务状态变更时的日期信息和事实。

5. 数据展示层设计

     

数据展示层,是需要根据用户个性化需求来设计。在稳固的底层模型的支持下,上层展示层更为强调灵活组合,快速响应用户前端交互。经常采用的是“大宽表”的设计,避免关联,加速显示。

1).示例:宽表

2).示例:数据可视化

  • 图中的类别、子类别是层次维度的体现。

  • 图中的销售额合计,是派生指标的体现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50718.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 成功的原因:把模型当产品做

当 ChatGPT 成为风靡全球的科技热点,用 60 多天的时间实现了用户破亿的成绩,不禁让人思索:它为什么能成功? 对此,IDEA 研究院讲席科学家张家兴阐述了自己的观点。 《2022-2023 中国开发者大调查》重磅启动,…

模型越大,AI编程个性化就越难?

分享嘉宾 | 郝逸洋,李钟麒 整理 | 朱珂欣 出品 | CSDN(ID:CSDNnews) 近些年来,随着AI等前沿技术的推陈出新及各场景中的应用,让更多的人触达AI时代的科技前沿。AI编程作为AI的子领域,如今也离普…

男子与AI聊天后自杀,Chat GPT被紧急叫停,AI有了思想会怎样?

AI如果有了思想,会发生什么? 前一阵,一位热衷环境问题的比利时男子,和人工智能“伊丽莎”聊天6周后,突然选择自杀身亡。 在他们大量聊天记录里,人们竟然发现“伊丽莎”对该男子说:“我们将永远…

ThinkPhp5 图片上传实例

ThinkPhp5 图片上传实例 HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文章添加</title><script src"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></s…

img_upload图片上传

使用img_upload.js后端采用PHP实现图片上传功能。 html部分 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link rel"stylesheet" type"text/css" href"img_upload.css&q…

ThinkPHP 接收前端上传的图片 / 文件

前言 上传图片还是文件这个可以根据你的修改&#xff0c;我这里展示的是上传图片&#xff0c;但是其实原理都是一样的 接收 —> 移动到目录 —> 返回图片路径。这里暂不支持多图上传&#xff0c;多图上传有时间会加上。 目录结构 使用到的文件 Result.php <?php na…

thinkphp 上传图片

public function upload_img(){// 读取图片资源// 存储路径$path "uploads/avatar";$file request()->file(background_img);// 存储图片$info $file->rule(uniqid)->move($path);// 存储成功if ($info) {//获取到上传图片的路径名称$name_img $path . …

tp5 图片上传

直接开门见山&#xff0c;来代码吧&#xff01; 第一步&#xff1a;html文件 <form action"{:url()}" enctype"multipart/form-data" method"post"><input type"file" name"img"><input type"submit&qu…

ThinkPHP5处理图片文件上传

在做项目实际开发中&#xff0c;会经常遇到文件上传&#xff0c;比如图片。用ThinkPHP5框架处理图片上传&#xff0c;参照ThinkPHP5开发教程。 示例如下&#xff1a; 首先先在application/admin/controller文件夹下面定义TestImage.php文件 TestImage.php&#xff1a; <?p…

TP 上传图片 (可上传多图)

//添加轮播图public function add(){import(ORG.Net.UploadFile); //引入扩展库 $upload new UploadFile();// 实例化上传类$upload->maxSize 3145728 ;// 设置附件上传大小$upload->allowExts array(jpg, gif, png, jpeg);// 设置附件上传类型$upload-&g…

图片上传功能实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、实现思路二、实现代码1.前端代码2.后端代码3.效果 总结 前言 实现一下图片上传回显功能。 一、实现思路 大致讲一下思路&#xff0c;具体的细节&#xf…

postman之图片上传

感谢百度! 选择Post方式 输入你的后台接口调用地址 Headers: 注意这里的Headers部分不要写任何东西。 如果之前是有Content-Type头信息, 那么就会上传失败. Body: 选择Body 选择form-data key:后台规定的接收文件的名称参数&#xff08;切记不是你传的图片名称&#xff09…

AI技术实现人工客服的开发流程

AI技术取得重大突破后&#xff0c;典型的应用场景就是人机交互效率极大提高&#xff0c;甚至在很多方面好于人和人的交互。使用AI技术实现人工智能客服是非常适合大规模商用的业务场景&#xff0c;今天和大家分享这方面的知识&#xff0c;希望对大家有所帮助。北京木奇移动技术…

微信自动回复客服(机器人)实现

**功能诉求&#xff1a;**能设置个人消息回复&#xff0c;群消息回复的机器人&#xff1a; **技术实现&#xff1a;**通过易语言python实现pc端&#xff0c;手机端的微信等机器人回复功能 配置微信自动回复功能支持三种方式&#xff1a;1&#xff0c;关键字精准匹配&#xff1…

连续喝一个月奶茶会怎么样?

本文来源于微信公众号&#xff1a;较高端人类&#xff08;ID&#xff1a;xinji656&#xff09; 参考资料&#xff1a; 2019年新式茶饮行业市场前景研究报告 中商产业研究院 当代大学生奶茶饮食消费习惯的调查与分析 沈昊然&#xff0c;赵淼林&#xff0c;李倩倩 农产品加工 浅析…

小红书笔记如何发布内容

很多人都在吐糟自己不能发送小红书的笔记本&#xff0c;但很多人对于小红书笔记发不了是为什么&#xff0c;还是找不到原因&#xff0c;其实原因有很多种&#xff0c;小编也不一一给大家介绍了&#xff0c;今天小编给大家演示下正确的小红书笔记发布流程&#xff0c;下面小编就…

小红书笔记怎么推广?笔记关键词有什么需要注意?

根据不同的产品&#xff0c;还有品牌的特性和市场情况&#xff0c;小红书有很多对应的推广方法&#xff0c;下面就给大家带来小红书笔记怎么推广?小红书都有哪些推广方式? 一、 小红书笔记怎么推广 1、关键词排名 小红书的系统机制会将笔记贴上标签&#xff0c;然后推送给相同…

3.14 我总结的一些小红书笔记发布频率技巧!【玩赚小红书】

一、笔记审核机制 说到笔记曝光率自然离不开小红书的笔记审核机制。小红书整改之前的机制近乎于零&#xff0c;只要避免很多不合规的发布即可。但是&#xff0c;现在我们必须遵守和适应新的审核规则和机制&#xff0c;才有更多的笔记文章分享到达用户眼前。 ​ 上图简略显示了…

Lazada数据:好的产品主图和标题是Lazada店铺大卖的一大步

Lazada店铺要做好产品的Listing,主图和标题便是主要的。这不单单是Lazada平台的规则,也是搜索引擎认可的形式。 针对Lazada店铺和卖家,好的标题能提高商品流量,好的主图便能使用商品的增加点击率。因为用户习惯都是先搜索购买品,当搜索词都在商品标题里,这个商品就会优先…

万顿思电商:亚马逊主图不用白底的后果是什么?

无论是在淘宝上传产品图片&#xff0c;还是亚马逊的产品图片&#xff0c;平台对于这些方面都是有相关要求的。比如图片的尺寸、图片得是白底等。那亚马逊主图不用白底有什么后果? 亚马逊主图最后一张必须是白底图&#xff0c;第一张可适当加点说明。如果最后一张不是白底&…