概述
上一篇聊到数据仓库的基本概念以及经典的建模方法的对比( 范式建模 VS 维度建模 ),那么本篇主要阐述关于数据仓库建模的基本概念。首先得要知道什么是数据仓库建模,及为什么要数据仓库建模(有啥好处?),最后就是要怎么建模;希望可以通过本篇对数仓建模有更进一步的了解。
What(什么是数仓建模)
什么是建模

从示例1左边的图形来看(就是一个圆形),但是再将右边的图形连贯一起看(是一个红色篮球),其实我们就可以知道左边的图形是想来表示右边的实体(红色篮球)。
示例2 是想结合 Java 中对象(万物皆对象)来说明,就比如左边的 User 类可以实体化变为一个人(性别、年龄、身高等等),而反过来就是对人的严重抽象化表现。
展示上面的示例其实是想表达,无论是一个圆形(示例1左边)还是 User 对象(示例2左边),都是对物的一种抽象化表现;建模,就是建立模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述–百度解释。
什么是数仓建模
数仓建模可以理解为是以数据为载体对事务与现实时间实体的抽象化,将数据有序有组织的分类和存储;更确切地说数仓建模是基于对业务的理解,将各种数据进行整合和关联,并最终使得这些数据可用性与可读性增强;目的就是为了让在使用数据的时候,可以快速的获取到自己关心的有价值的信息并且及时的作出响应。
Why(为什么要建模)
可以不数仓建模?

首先回答肯定是可以的,就比如上面图中的两个小图,我要在其中找一本我需要的书;其实都可以找到至于哪种会更快,看完图肯定就是显而易见的。
不进行数仓建模有啥好处呢?
- 发需求快,因为不需要构建什么中间层,直接去底层表聚合需求所需要的指标就行;
- 开发人员要求不需要太高,开发人员只需要知道有什么表,不需要考虑什么建模的方法;
不进行数仓建模有啥弊端呢?
- 数据质量差,同一个指标出现在多个模型中,或者数据中的口径不一致,以及烟囱式开发;
- 成本高性能低,相同的计算指标逻辑跑几遍,就会出现整体的计算性能降低和存储成本升高;
- 效率差,出现模型重复建设时,就会伴随着开发效率低与沟通效率降低;
数仓建模有啥用
-
使用性能提升:通过对数仓模型建设,可以很好减少重复模型的建设;开发人员和业务人员能够很容易的达成系统建设范围的界定,提升沟通效率和开发效率。 -
数据质量提升:通过数仓规范化建模,可以使得数据质量进一步提升,解决数据中出现口径不一致的问题;以及可以很好的分离出底层技术的实现和上层业务的展现,当上层业务方式变化时,底层的技术实现可以非常轻松的完成业务的变动,使整个数仓达到灵活性与扩展性。 -
使用成本降低:通过合理的数仓建模,可以减少相同逻辑重复运行的情况,从而降低整体的计算成本与存储成本。
How(怎么建模)
谈到怎么建模,在上一篇中提到过两种建模的方法论;而在这里要说的是阿里推出来的建模方法论( OneData 建模体系),后续的内容也是基于该体系展开说明。OneData 建模方法论本质上是 Kimball 维度建模方法论结合平台系统,划分数据域,标准化了建模流程、固化了建模动作验证并保证模型元素(数据域,业务过程、来源表、表和指标中文和英文名称、计算口径等)唯一性的一种实践。
维度建模与 OneData 建模流程

维度建模流程
选择业务过程:选择哪些业务过程是数仓所覆盖的,这是维度建模的基础。例如:数仓需要分析某个零售店的销售情况,那么与这零售店销售相关的所有业务流程都是需要了解掌握的(如:下单、付款、发货和完成订单都可以叫作业务过程)。声明粒度:粒度指的是数据的细化程度,如订单是细化到生成粒度还是小时粒度(每个小时有多少订单)、或者每天粒度等等。确认维度:维度主要是要描述事实表的出处和所处环境的维度信息,维度表也是事实表的基础;维度的粒度必须和粒度一致。如统计订单每日的数量,这里的维度是每日同时每行数据的粒度也是每日。确认事实:事实是来用来表达业务过程中度量,大部分事实表的度量都是数字类型(成本、数量、金额等);度量可分为三种:可加、半可加和不可加(后面内容会进行说明)。
OneData 建模流程:
-
数据调研:- 业务调研:业务调研是否充分,将会直接决定数据仓库建设是否成功;需要清楚构建的数仓涵盖哪些业务线,以及各个业务线之间关系与流程。
- 需求调研:如果不进行需求调研分析,就相当于数仓就是闭门造车;需求调研肯定是需要收集数据使用者的需求,以及现有的报表系统与数据消费需求,更为关键的是找数据使用者沟通、了解需要什么数据诉求。
-
数据域划分:数据域指的是面向业务分析,将业务过程或者维度进行抽象的集合;业务过程是一个不可拆分的行为事件,如传统的互联网一般分为:渠道、流量、交易、商品等等这一类的数据域。 -
构建总线矩形:按照维度建模理论,对业务数据进行分析,抽象出业务过程和维度。 -
明确统计指标:对需求进行分析,梳理出指标体系,包括原子指标、派生指标、衍生指标。 -
构建明细模型:构建 DWD 层与 DIM 层。 -
构建汇总模型:构建 DWS 层。 -
代码开发:进行实际的代码开发流程,部署生成 ETL 任务。 -
资产管理:对运行任务进行监控,以及资产查看等等。
OneData 体系到底是什么呢?
=》 第二部分数仓建模-OneData体系之需求调研及规划(一)
以上示例与内容仅是个人观点,如有误十分感谢提出;内容还在完善中!!!
参考链接:
《大数据之路:阿里巴巴大数据实践》
本文介绍了数据仓库建模的概念,强调了建模对于理解和组织数据的重要性。数仓建模旨在提升数据的可用性和可读性,通过建模能解决数据口径不一致、提高数据质量,减少重复计算,降低成本。文章提到了维度建模的选择业务过程、声明粒度、确认维度和事实的步骤,以及OneData建模流程,包括业务调研、需求调研、数据域划分、构建总线矩阵等阶段,以实现更高效的数据管理。

3144

被折叠的 条评论
为什么被折叠?



