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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 成本和单价是产品的维度还是事实表中的事实?来看看我对这个问题的思考与分享吧。

1. 问题概述

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

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

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

image.png 

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

 image.png

事实部分翻译如下:

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. 总结

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

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

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

最后感谢与我一起讨论这个问题的本质的同事们!谢谢大家!

 

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
6月前
|
SQL 存储 关系型数据库
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
126 0
|
存储 数据挖掘 关系型数据库
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
|
7月前
|
存储 数据可视化 前端开发
数仓常用分层与维度建模
本文介绍了数据仓库的分层结构和维度建模。数仓通常分为ODS、DIM、DWD、DWS和ADS五层,各层负责不同的数据处理阶段。维度建模是数据组织方法,包括星型和雪花模型。星型模型简单直观,查询性能高,适合简单查询;雪花模型则通过规范化减少冗余,提高数据一致性和结构复杂性,但可能影响查询效率。选择模型需根据业务需求和数据复杂性来定。
707 0
|
7月前
维度建模-2
维度建模-2
90 4
|
7月前
|
存储 数据挖掘
维度建模-3
维度建模-3
136 3
|
7月前
|
存储 数据建模
维度建模-1
维度建模-1
74 1
|
7月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
316 0
|
数据采集 存储 数据挖掘
维度建模中,粒度对于事实和维度的影响
度是指在事实表中所记录的数据的最小粒度,也可以理解为事实表中每个记录所代表的含义。在维度建模中,粒度对维度表和事实表都具有重要性。
506 0
|
人工智能 自然语言处理 数据管理
分析的四个维度
分析的四个维度
|
DataWorks
维度建模实践一例 (一) 维度还是事实
成本和单价是产品的维度还是事实表中的事实?来看看我对这个问题的思考与分享吧。
361 0
维度建模实践一例 (一) 维度还是事实