首页 > 编程知识 正文

前置仓模型(kimball维度建模)

时间:2023-05-04 13:32:51 阅读:103371 作者:437

编辑导读:数据仓库有助于建立数据采集,进而支持企业做出更好的决策支持,推动后续业务。那么,我们在构建数据仓库时应该注意什么呢?本文总结和分享了数据仓库建模中的维度问题。让我们来看看。

本系列将从小白的角度讲述构建数据仓库过程中所需的知识和问题。主要受众是数据中层产品、数据开发者和数据分析师。

引入/介绍

大学时听说过数据仓库,但当时被书的厚度说服了。后来我不得不做数据仓库的工作,这次我不得不咬牙重新打开那些经典书籍。

起初,我想快速着陆,浏览概念上的东西,比如业务流程、粒度、维度、事实、度量等等。中间发现各种基础抽象概念不清晰,对竞品的一些功能理解不清。

俗话说,欲速则不达。底层知识是数据不变的产品的核心。只有明白这一点,我们才能跑得快、稳、远。

00-1010什么是模型?作为一个数据行业从业者,如果你从来没有想过这个问题,你一定要读下去。

先看一个例子:2021年3月6日,tzdyj下楼到【行家】便利店买菜,逛了好几次。虽然他很饿,但他想减肥,最后得到了一个【仁德书】人造肉汉堡。

准备买单的时候,收银员告诉他,最近活动加4元,可以选择原价8元的一瓶【pop rocks】酸奶。Tzdyj觉得很划算,就去买酸奶,一共付了12元。

上一段是模型。

作为一个计算机专业的学生,当我第一次看到有人给我解释这个模型的时候,我的第一反应是什么?这不是一段文字吗?没有数据库,没有表格。这能当模特吗?

别急,先看看百度百科给出的模型定义。

模型是指通过主观意识,以实体或虚拟表达的方式,构成客观阐述形态结构的表达目的的对象(对象不等于对象,不限于实体和虚拟)。

简单来说,模型就是映射“事实”的东西,构建这个东西的动作叫做建模。

事实上,如果我们学习数据库,不仔细阅读教科书,很容易仅仅从数据库和数据结构的层面狭隘地理解模型。

上面的例子是一个“人物模型”。而且这种模式可以增加更多的细节,比如怎么交,交多少钱。

为了表达更简洁,我们可以省略更多信息,只记录关键信息:“2021年3月6日,tzdyj购买了一个仁德书牌人造肉汉堡和一瓶pop rocks牌酸奶(共12)”。

如果用Excel,可以更简洁(节省空间,你懂的):

一、什么是模型,什么是建模

电脑的出现也催生了新的语言,我们用新的语言开始建模也是顺理成章的。

在这里,我将跳过关系模型和普通模型的冗长介绍,直接跳到应用场景。假设这家便利店使用现成的ERP和CRM系统。这些系统都设计了模型,数据填写如下。

二、范式模型,为了更好地记录和更新

1. 订单表

2. 订单详情表

数据量不大。分析师编写SQL直接查询正常模型。会计分析无所不能,几十万的数据更小,速度完全OK。

3. 商品详情表

范式模型解决了快速记录和节省存储空间的问题。

然而,任何事情都有两面性。当数据量较大时,从正常模型查询数据比较慢。但是一旦数据量大了,就受不了了。

社会,但凡有问题,总会有来自天堂的勇士。Innon和Kimball提出了一个新的方案:设计一个新的数据分析模型。

该模型主要解决数据插入和更新、保持一致性等问题,而维度模型解决大数据场景分析问题,称为OLTP和OLAP。

通过一个荒谬的例子来理解它们之间的区别。

你家是个大家庭,七姨八姨。你通常需要打电话。建模:每个人只保留同龄人和孩子的联系方式。想找lcdgq/孤独之歌(你)换个笑煎蛋,只能通过你爸。维度建模:所有亲戚的联系方式都写在一个家庭通讯录里。如果你想找人,可以直接找通讯录。

这个例子在现实生活中是不存在的,主要是帮助大家理解两种模式的区别:

为了应对数据频繁变化的场景,范式的数据是分散的。为了保证数据的一致性,需要符合一定的规范。我们通常使用三种范式(3NF)。维度模型将数据冗余,将一些相关数据存储在一起,便于快速查询和检索。维度的出现是为了解决大数据量带来的查询速度慢的问题。

在数据仓库领域的经典之作01《维度建模工具箱》中,Kimball定义了经典维度建模的四个步骤:选择业务流程、声明粒度、确定维度、构建事实。

p>

1. 业务过程

很多数据仓库书籍都给出了业务过程的通用定义:业务过程是企业活动中的事件,如下单、支付、退款都是业务过程,业务过程是一个不可拆分的行为事件。

看完定义,我们就会犯难了,什么是企业活动中的事件?打开手机付款,选择支付宝和微信,这些操作算不算业务过程?

这里,我们真得咬文嚼字,回归场景。交易的场景,有 2 个参与方:消费者和便利店。

便利店作为企业,如果它关心的结果只是消费者买了什么、买了多少,那消费者选择支付方式的事件,它完全不管,也不用记录。

但如果用户只开通了微信支付,没开通支付宝,因为支付问题导致没法成交,那企业肯定也会关心选择支付方式这个事件以及其结果。

业务过程,是不可拆分的事件,而且是基于分析目标进行选定的。

理解一个词,不能脱离情景,多尝试将自己置于企业经营的情景下。

企业里每天都有各种事情,而作为直率的音响的我们,最核心的关注点是什么?是从收益、成本出发,价值链条上最具影响力的事情或者事件。

2. 粒度

理解粒度,其实很简单:干什么样的事情,会新增一条记录。

wwdld支付了一笔,系统会新增一条支付记录,当我们要统计分析交易的订单数时,订单是最细的粒度。

而这笔交易中,包含了两个商品,当我们要分析所有订单卖出的商品数,每个商品则变成了最细粒度。

3. 维度

维度,就是我们要进行分析的角度。

比如,在便利店场景中,一天的经营结束了,可以按品牌的维度分析,各个品牌的酸奶销售量;可以按日期维度分析,我们可以知道,周一到周日,每天的交易额如何。

某天,当我们发现交易数据发生异常的时候,我们可以按照品牌、日期等维度进行分析,逐个排查,直到找到根本的原因。

4. 事实

广义地来说,所有被记录下来的事情,都是事实。

而维度建模中,对事实进行了细分,事实包含 2 类属性:维度、度量。维度就是上文所说的各个角度的数据,而度量,则通常是数值型的。

举个例子,我们描述一个长方形,但是没描述它具体多长、多宽,其他人是没法确定这个长方形具体多大的。

只有补充上它对应的维度和度量,人们才能理解。比如,长 4cm,宽 3cm。

长、宽是维度,4米、3米则是对应维度上的度量。

事实,就是描述客观事物的所有核心信息的所有数据的集合。

五、总结

模型是映射 “事实” 的东西,构建这个东西的动作就叫做建模。范式模型很好地解决了快速记录和节约存储空间的问题。维度模型是一种用于大数据量场景下实现快速分析的模型。维度建模有四大要素:业务过程、粒度、维度、事实。

数据分析,本质还是利用数据去分析客观的规律,利用这些规律,进而进行经营战略、营销策略上的调整,以应对市场的变化。

用好维度建模,从数据中发现规律和秘密,更好地帮助企业提高效率和效益。

下期文章我们继续聊数仓,带你细品粒度~

作者:lee;公众号:乐说乐言

本文由 @lee 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。