最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

数据仓库Kimball维度建模方案

[复制链接]
跳转到指定楼层
楼主
发表于 2019-5-15 16:20:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 168主编 于 2019-5-15 16:23 编辑

一、文章概述

在开始维度建模之前,数据小组需要理解业务需求,以及作为基础的源数据的情况。通过与业务方沟通需要,数据小组找到业务方想要的关键指标、支持数据分析的目标。维度模型不应该由那些不懂业务需求的人来设计,业务方与数据小组人员的协作才是成功的关键。


二、四步维度建模法

维度建模设计期间主要涉及到4个决策:

  • 选择业务过程
  • 声明粒度
  • 确定维度
  • 确定事实


按照业务过程、粒度、维度和事实声明的流程,数据小组需要确定表名和字段名、示例值和业务规则。


1、选择业务过程

业务过程实际上就是操作的过程,例如,刷新微博,转发微博,点赞微博,每个月的活跃微博用户数等。度量值可以从业务过程的事件中获取,并转化为事实表中的事实。过程的选择非常重要,这是因为过程的定义就确定了粒度、维度、事实的定义。每个业务过程对应着数据仓库总线矩阵中的一行。

  • 业务过程通常用行为动词表示,因为它们通常代表业务执行的活动。与之相关联的维度描述与每个业务过程事件。

  • 业务过程通常与某个业务操作相关,例如转发、评论微博。

  • 获取关键性能指标度量。分析人员需要通过过滤器和约束的不同组合,来审计和评估这些度量。

  • 业务过程通常由输入和产出输出组成。通常情况下,某个业务过程的输出是其他业务过程的输入。用建模的专业术语描述就是,产生一系列的业务过程事实表。



我们需要把注意力集中在业务过程,而不是功能化的部门,以获取统一一致性的信息。确保一致性的最好方法是一次发布数据。


2、声明粒度

粒度用来确定事实表中的一行表示什么。在确定维度和事实表之前必须声明粒度,因为每个维度和事实必须与定义的粒度保持一致。从给定的业务过程中提取数据时,原子粒度是最细的粒度。建议从关注最原始的粒度开始设计,这样我们就可以针对不同的事实表粒度,建立不同的物理表。切记同一个事实表中不能包含多种不同粒度。


典型的粒度声明如下:

  • 用户刷新一次微博的行为采用一行表示。

  • 用户每发布一次微博的行为采用一行表示。

  • 每个明星每个月发布的微博情况采用一行表示。

  • 每个业务产品页每个月的活跃用户采用一行表示。



维度建模者千万不要忽略声明粒度这一看起来并不起眼的一步。多年来,从对大量维度设计的经验来看,最常见的错误就是在设计之初没有为事实表声明粒度。


3、确定维度

维度表是数仓的灵魂。数据小组的主要工作都要放在数据管理和维度表的开发方面。维度围绕着某一个业务过程所涉及到的“谁、什么、何时、何处、为什么、如何”等背景展开。维度表中包含BI分析需要的各种过滤和分类的描述性属性。牢牢把握事实表粒度,就能将所有可能存在的维度区分开。


4、确定事实

事实涉及来自业务过程事件的度量,基本上是用数值表示。一个事实表行与事实表粒度描述的度量事件是一对一的关系。在事实表中,所有的事实只允许与生命的粒度保持一致。


综合考虑业务用户需求和数据源的实际情况,将4个步骤联系起来。

4.1、事实表分类

  • 计算获得的事实


总利润额就是由销售总额减去成本总额,也称为收入。尽管是通过计算所得,但对所有维度来说,总利润额也是可加的。那么是否应该将计算获得的事实放在事实表中呢?我的建议是将他们放在事实表中。存储计算值就意味着其计算规则和ETL过程中保持一致,进而消除了用户计算错误的可能性。因此,存储总利润额也能确保所有用户与BI报表展示的利润额保持一致。然而,有些不可加的度量值,例如,百分比或比率,则必须由BI工具计算,因为此类计算不能预先计算并存储在事实表中。


  • 不可加事实


利润率可以通过利润总额除以所有成本开销获得。利润率是不可加事实,因为它不能通过任何维度汇总。计算方法是分别记录收入汇总,以及开销汇总,然后作除法计算。


注意:百分比和比率是不可加的。应当将其分子和分母分别存储在事实表中。比率只能通过计算获得,切记是汇总的比率,而非比率的汇总。


单价是另外一种不可加事实。每一笔交易的行的单价通常不会被关注。一般都是通过销售额和销售数量分析平均价格。那么是否需要在事实表中存储不可加事实呢?我的建议是有时候是有必要存储的,例如在报表中展示单独值或者在事实表中应用过滤器。


  • 事务事实表


事务型业务过程是最常见的业务过程,这些业务过程的事实表有如下特征:

  • 原子事务事实表的粒度可在事务环境下进行简单的描述,每个事务一行或每个事务线一行。

  • 由于这些事实表记录的是一个事务事件,而事务之间又是独立的,所以他们通常是比较稀疏的。

  • 事务事实表非常庞大,数据仓库中多数包含数十亿、数百亿行的事实表。

  • 事务事件返回的度量通常是可加的。

  • 事务事实表通常都是多维的。



三、方便扩展的维度模型

维度模型需要对数据关系发生变化时具有灵活的适应性。当发生下面的变化时,不需要改变现有的BI查询应用。

  • 当新增事实与存在的事实表粒度一致时,可以创建新列。
  • 当新增维度和存在的事实表粒度一致时,可以通过添加外键列和维度表的形式添加。
  • 可以在维度表中添加新的字段描述信息。
  • 可以通过在维度表上增加属性,以更细的粒度重置事实表,是事实表更加原子化。

作者:清和  来源:大数据漫路求索
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 00:52

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表