维度建模实践一例维度还是事实

阿里云云栖号 阿里云云栖号     2023-02-10     261

关键词:

1. 问题概述

最近在做工业项目模型设计评审的时候,遇到了一个设计问题,有点纠结。和其他同事交换了意见,思考了过后,也想跟大家分享一下。

问题:“成本”和“单价”是一个销售实体的事实,还是产品维度的属性?

关于这个问题,最开始是在讨论成本计算的时候发现的。与教科书中零售场景不一样的是,工业上某个产品的成本是要计算出来的。而《维度建模权威指南》书中的成本是事实表的一个事实。如下图所示:

在另外一个例子中,单价、成本都是销售实体中的事实,如下图所示:

事实部分翻译如下:

Sales Quantity -- 销售数量

Regular Unit Price -- 常规单价

Discount Unit Price -- 折扣单价

Net Unit Price -- 净单价

Extended Discount Dollar Amount -- (扩展-总)折扣金额

Extended Sales Dollar Amount -- (扩展-总)销售金额

Extended Cost Dollar Amount -- (扩展-总)成本金额

Extended Gross Dollar Amount -- (扩展-总)毛利润金额

如上图所示,一般我们零售场景中商品的单价是相对固定的,零售商会有一些折扣(线上商家的折扣应该会更复杂),所以,单价、成本是固定的利润是与订单相关的。我们可以从上述事实表中获得一些事实:

①销售数量、销售金额、成本金额、毛利润金额都是可加事实。

②单价是一个不可加事实。

在零售的销售分析场景,单价与成本是作为销售实体的事实。而在我现在遇到的场景,我们遇到的第一个场景是分析产品的成本与价格。

2. 成本与单价的本质

抛开分析场景,我思考了成本和单价的本质,在销售这个事实中单价和成本本质上是产品的属性。零售的场景中,销售的单价是商品的单价,销售的成本是是商品的成本。所以,单价和成本就是商品的属性。

但是为什么我在《维度建模权威指南》的书中看到的产品维度都没有这两个属性呢?我还特地去搜了一下内网的dataworks数据地图上的产品、商品的维度表,发现确实有很多维度表都没有单价和成本两个属性,但是也有一些商品维度表是有这两个属性的。

为什么自己会觉得这两个表中的事实并不是销售这个事实表中的事实呢?思考过后我终于意识到,我忽略了分析的需求。缺乏业务认知的我意识不到商品的成本和单价的变动,我错误的忽略了这两个事实的分析需求。但是作为商品生产和经销商,价格和成本的变动是时时刻刻的。所以,就有分析单价和成本这两个事实的需求。

这就是为什么大部分场景,商品维度表中都没有单价和成本。因为这两个事实要么在“销售事实表”中,要么在其他“商品分析事实表”中。而这些事实表中的商品的维度就不会有单价和成本了。

2. 事实表的设计

通过上面的思考,我意识到了一个问题:商品的单价、成本本身就是一个事实。只是成本是通过一系列的复杂计算获得的一个事实,其本身是根据原材料的成本、制造成本、运输成本等多种因素计算而来。而且价格本身又与成本有一定的强关联性。

我们通过在销售这个业务过程中去分析单价和成本这两个事实,说明销售这个业务过程中分析人员会关注客单的商品和成本。而且,在销售这个业务过程对单价和成本的分析主要是关乎销售这个过程,这个业务过程可能是一个企业业务分析中最核心和关键的事实。

我们其实可以根据对产品本身的分析需求构建一个商品定价业务过程的事实表,这个业务过程比商品销售更简单。而且对于我参与的这个项目来的客户来说,这是一家第一产业工业企业,其生产规模非常大。订单中商品的种类相对零售这种销售场景,其实是非常少且相对固定的,其成本和单价是每天进行一次计算和定价。

所以,我在思考过后,建议还是保留一个商品定价的事实,这是销售事实前的业务过程。在商品定价事实中有商品的成本计算相关的事实、单价等。另外在销售事实中,仍然会保留成本和单价这两个事实。对这个设计的解释,我认为销售业务过程中的单价和成本本身就是销售业务过程中的事实,但是追求其来源是产品定价中的事实。

3. 总结

谈及整个过程,我认为最核心的是找到我们的业务需求是什么。例如这个项目的场景中,对商品的成本和定价的分析本身是与企业生产资料相关的。而在这个企业的销售场景,在这里去分析产品的成本和定价其实是有点多余的,销售业务过程核心分析的还是销售本身。因为本身对一个产品品种不多,每天一个成本和定价的情况,

我在最开始之所以被困扰,就是我忽略了分析的本质,错误的看待产品的定价这个事实,选择性的视而不见。但是当我思考过后,重新看待分析的需求,我就不再有这个疑问。

通过这件事,我认为在做模型设计的时候,一定要尽可能的去参考一些前人对这些模型的设计。因为我们在初步进入一个行业的时候,对这些新行业的业务的理解都是有欠缺的,都是逐步去学习理解的。参考这些成熟模型,就会让你有了一个参照物,避免走入误区。再就是一定不要放弃思考,如果我一开始就以书中的参考模型为原型去设计,或者就是把成本和单价放到产品维度中,我就不会对这个设计有更深的理解。

原文链接

本文为阿里云原创内容,未经允许不得转载。

对于维度建模的理解

什么意思维度模型是数据仓库领域大师RalphKimball所倡导,以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。维度建模... 查看详情

具有产品和库存维度的销售事实的维度建模

】具有产品和库存维度的销售事实的维度建模【英文标题】:Dimensionalmodelingforsalesfactwithproductandinventorydimension【发布时间】:2014-06-1617:57:09【问题描述】:我正在为销售分析构建一个维度模型,该模型具有一个名为Sales的事实并... 查看详情

维度建模中事实表的两个或多个相似计数

】维度建模中事实表的两个或多个相似计数【英文标题】:Twoormoresimilarcountsonfacttableindimensionalmodelling【发布时间】:2010-09-2021:12:49【问题描述】:我设计了一个事实表,用于存储特定日期维度和操作类型(如创建、更新或取消... 查看详情

数仓实践:浅谈kimball维度建模

...使得数据仓库具有良好的可扩展性和可维护性?Kimball维度建模理论很好地回答和解决了上述问题。维度建模理论和技术也是目前在数据仓库领域中使用最为广泛的、也最得到认可和接纳的一项技术。今天我们就来深入探讨Ral... 查看详情

维度建模的基本概念及过程

 摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据... 查看详情

20190424数据仓库维度建模

1.简单一点的模型,事实表,维度表 事实表:具有连贯数据编号的业务型数据,例如:发生的销售事实,才放入的数据,不要用0去表示,因为会有很多0需要处理维度表:维度表通常不满足第3范式,它通常非规范化,一个维... 查看详情

维度建模(星型雪花星座)(代码片段)

...剽窃!点赞、关注、不迷路!摘要:事实表、维度表、维度模型、核心四步骤事实表:度量(数值)、维度表的主键作为事实表的外键。维度表:包含事件发生的实际存在的文本环境,比如产品、... 查看详情

数仓实践:浅谈kimball维度建模

我们不管是基于Hadoop的数据仓库(如Hive),还是基于传统MPP架构的数据仓库(如Teradata),抑或是基于传统Oracle、MySQL、SQLServer关系型数据库的数据仓库,其实都面临如下问题:怎么组织数据仓库中... 查看详情

数据仓库维度建模法案例

参考技术A维度建模法(DimensionalModeling)是数据仓库建模中比较常用的方法,最常见的数据模式包括星型模式(StarSchema)、雪花模式(SnowflakeSchema)和事实星座模式(FactConstellation)或星系模式(GalaxySchema)。在之前的文章中,我... 查看详情

数据仓库设计

维度建模技术维度建模(dimensionalmodeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。一、维度建模技术新增两个概念:维度表(dimension)、事实表(facttable)。一个典型的例子是,把逻辑业务比作一个立方体,产品维... 查看详情

大数据分析基础——维度模型

参考技术A维度模型的概念出自于数据仓库领域,是数据仓库建设中的一种数据建模方法。维度模型主要由事实表和维度表这两个基本要素构成。维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也... 查看详情

如何使用不同谷物的事实表对日期维度进行建模

】如何使用不同谷物的事实表对日期维度进行建模【英文标题】:HowtoModelDateDimensionswithFactTablesofDifferentGrains【发布时间】:2020-09-1820:59:20【问题描述】:我们有一些DW用例,其中我们有不同粒度的事实表-例如,按天按商店销售... 查看详情

搭建数据仓库第06篇:逻辑建模–3–维度建模核心之总线架构

目录前言维度建模星型模型小结 前言维度建模是Kimball提出来的经典的数据仓库建模思想。维度建模提倡针对某一主题,通过建设维度和事实来快速建设数据仓库。与维度建模相对应的自然是Inmon的范式建模。在上篇也提到范... 查看详情

数仓第三篇:详解维度建模之事实表!

目录导读:01、事实表基础1、事实表特征2、有事实的事实表3、无事实的事实表02、事实表设计规则03、事实表设计方法04、有事实的事实表1、事务事实表2、周期快照事实表05、无事实的事实表06、聚集型事实表1、基本原则2、... 查看详情

维度建模 - 地理的支腿维度

】维度建模-地理的支腿维度【英文标题】:DimensionalModeling-Outriggerdimensionforgeography【发布时间】:2021-03-0213:19:15【问题描述】:目前,我正在研究维度建模,并且对支腿维度有疑问。该公司在客户和供应商之间进行贸易并充当经... 查看详情

如何对链接到具有不同粒度级别的多个事实的维度表进行建模?

】如何对链接到具有不同粒度级别的多个事实的维度表进行建模?【英文标题】:Howtomodeladimensiontablethatlinktoseveralfactswithdifferentlevelofgrain?【发布时间】:2019-10-2306:41:05【问题描述】:我有一个事实是存储客户的地址。问题是,... 查看详情

维度建模:如何创建没有代理主键的表?

】维度建模:如何创建没有代理主键的表?【英文标题】:DimensionalModeling:howtocreateatablewithoutSurrogatePrimaryKeys?【发布时间】:2018-11-0816:36:58【问题描述】:据我了解,事实表中没有主键,放置代理键在某种程度上是浪费空间。因... 查看详情

对具有直接关系但在细节层而非维度层的事实表进行建模

】对具有直接关系但在细节层而非维度层的事实表进行建模【英文标题】:ModelingFactTablesthathavedirectrelationships,butatadetailandnotadimensionlayer【发布时间】:2017-04-0516:50:39【问题描述】:这与我的问题非常相似。http://forum.kimballgroup.com... 查看详情