数据仓库-订单管理应该注意那些

订单管理的总线矩阵

按照最简单的形式,想象企业数据仓库的总线矩阵。
如图:日期是订单管理中各个环境都需要记录下来的。
客户,产品,销售代理,交易他们呢关心报价,下订单,运输至客户,开发货运发票,客户退货。
交易关心:报价,下订单,运输至客户,开具货运发票,客户退货。
仓库关心:运输至客户,开具货运发票,客户退货。
运货商关心:运输至客户,开具活跃发票,客户退化。

订单管理总线矩阵

订单事物

根据订单管理总线矩阵我们看看对应的企业仓库是什么样的。

订单事务管理的企业仓库

抵制事实表规范化的冲动

1,一些设计者更希望进一步规范化事实表,保留单一的通用的事实及维度。上图的事实表的最小粒度是每个订单明细一行,不是每个订单明细事件一行。
2,但是这种规范化设计,在事实集合非常巨大的时候,具有意义,但是给定的事实行会呈现出稀疏的状态,且没有事实之间的计算结果。
3,实际我们更应该抵制这种规范化事实表的冲动,每行的事实不应该是稀疏的。如果需要规范化事实表,则需要将事实表中行数量乘以事实类型的数量。例如假设事实表包含1000W行,每行包含6个键和4个事实,如果规范化处理将将包含4000W事实行,7个健和一个事实。此外需要在事实间执行算数函数的时候,比较困难。但是如果在一张表中的时候计算比较容易。
4,如果支持BI的应用是OLAP多维数据库,则更加适合采用规范化数据,多维数据库可以沿着任何维度对多维数据进行切分以执行相关计算,无论是日期,客户,还是度量类型。

维度角色扮演

我们总是希望通过时间来考察性能。在事务事实表中,主要的日期列是事务日期,如:订单日期。但是有时会发现其它日期可能会每个事实关联,例如:请求发货日期。这个就涉及到 维度角色扮演。如下图:

维度角色扮演

从上图中可以看到,每个日期成为事实表中的外健,但是不能简单的将两个外健连接到同一个日期维度表,SQL会将这种双向同时连接解释为需要两个相同的日期。但是我们可以建立并管理单独的物理日期维度表,然后使用视图或者别名建立两个不同日期维度的描述。
注意:当某个单一事实表中同时出现多次时,则会存在维度模型的角色扮演,基本维度可能作为单一的物理表存在,但是每种角色应当被标识为不同的试图展现到BI工具中。

日期维度 角色扮演和总线矩阵

日期维度-角色扮演和总线矩阵

产品维度 的共同特征

产品维度是最常见、最重要的维度表之一,它描述了公司销售产品的完整组合。大多数产品表都具有一下共同特征:
1,大量冗长、描述性的列。维度表属性自然的描述维度行,不会因为其它维度的影响而发生变化,不会随时间发生变化,尽管某些属性可能会随时间缓慢变化
2,一个或者多个属性层次,加上没有层次的属性。在试图展示产品描述的时候,具有按一个属性,然后在另外一个属性进行约束是最近本的要求,所有属性,无论是否适合单一层次,都应该能被方面的进行上卷和下钻。多数产品的维度属性是单独的低粒度属性,不是明确层次结构的一部分。
3,重新建立操作型产品代码到代理键的映射。需要使用无语义的代理主键以避免由重复使用操作型产品代码所带来的严重错误,另外需要集成来自不同操作系统的产品信息。
4,增加描述性属性值以扩大或者替换操作型代码。不要接收类似业务用户熟悉操作型代码这样的借口。业务用户熟悉操作性代码的唯一原因是被迫使用这些代码,因此内容必须具有易读性,模糊神秘的缩略词与纯数字一样不受欢迎,应该将他们替换为便于理解的文本或者进行扩充。
5,检查属性值,确保没有拼写错误,不可能存在的值,多变量等。BI应用和报表依赖于维度属性的准确内容。
6,将属性定义、解释、元数据来源文档化。记住元数据类似DW/BI的百科全书。必须警惕元数据仓库的获取和维护工作。

客户维度的共同特征

客户维度为每个发送产品的不同地址建立一行。

客户维度

从图中我们可以看到,一个客户维度同时支持不同的层次,例如Address,城市,州县,国家等不同层次。层次可以不同级别的数量,在这这些层次的每个层次上进行上卷和下钻是维度模型必须支持的。

客户维度如何处理单一维度表与多维度表

1,一对一关系或者多对多关系如何处理?
如果多对多关系是一种特殊情况,比较少,则应该将多对多的关系合并到客户维度中去,需要知道的是这类少见的多对多关系需要多个代理键。
如果多对多关系常见,则需要为多对多的双方分别建立维度。
2,如果两种维度关系随着时间发生变化,或者两者的维度关系受其它维度的影响,最后分别建立不同的维度。
3,如果某一种维度的数据量已经很巨大了,不建议将两个维度进行融合。
4,例如当业务方认为销售代理和客户应该是不同的事情吗?这种场景强迫将两个不同的维度合并为一个维度没有任何意义。
5,当实体之间存在固定的随着时间变化的强关联的关系时,他们应该被建模到单一维度中。大多数情况下,当实体被划分为两个不同的维度时候,设计将会更简单且方便管理,但是要注意太多维度的一般性准则:如果在您的模式中已经包含有25个维度,则应该考虑尽可能将这些维度合并。
6,若存在两个不同的维度,一些设计者希望建立一张两个维度关键字的小表以展示关联性,而不需要使用事实表。多数情况下没有必要。没有理由避免用事实表来响应这类需求。

应用于客户/代理分配的无事实的事实表

有时候用户希望获得按照时间分析销售代理的复合分配问题,即使订单已经发生了。

应用于客户/代理分配的无事实的事实表

交易维度

该维度有时称为合同。当面对百万级或者亿万级大型事实表时候,希望减少事实表中关键字数量,采用复合健能够将交易属性当成单一维度。


交易维度示例

针对订单号的退化维度

因为处于事实表的订单号没有和维度表连接,所以他是一种退化维度。
1,订单号在订单事实表中的每个包含明细项的行都包括
2,维度模型中订单号通常和订单表头没有关联。可以将订单号分类到不同的维度中去。例如订单日期,客户的“发货到”
3,订单号可以用于连接数据仓库与后端的操作型系统。
5,也可以起到事实表主键的作用,
注意:退化维度通常被保留作为操作型事务的标识符。不能将他们作为一种坚持要在事实表使用神秘模糊代码,而不与维度表连接以获得描述性解码的接口。

杂项维度

1,忽略这些标志和指标。当偶尔需要他们,且这些指标和标志难以理解且不一致,也许真应该去掉他们。
2,保持事实表中行的标志和指标不变。不希望在事实表中存储无法辨认的神秘标示。也不希望存储包含大量的字符描述符,在行中保留一些文本指标令人反感。
3,将把每个标志和指标放入自己的维度中。如果外键的数量处于合理的范围(不超过20个),则在事实表中增加不同的外键是可以接收的。但是若外健列表已经很长,则应该避免将更多的外健加入到事实表中
4,将标志和指标存储到订单表头维度中。
总之:杂项维度就像厨房中的垃圾抽屉,主要用于DW/BI专业人员之间,在于业务进行讨论的时候,我们通常将杂项维度称为事务指示器或者事务概要维度。

应该避免的表头/明细模式

避免模式一:将事务表头当成维度。订单表头维度可能非常庞大。维度表不应该和事实表以同样的速率增长。

避免模式一:将事务表头当成维度

避免模式二:在列表事实中没有继承表头维度。如图中所描述的那样,订单表头不再被当作整体维度,被当作事实,能够准确的表示订单表头与明细项的父/子关系,但是仍然存在问题。当用户希望按照任意表头属性对列表事实分片和分块时候,大型表头事实就需要与更大的列表事实表关联。

避免模式二:列表事实中没有继承表头维度

数据僧 历史文章

数据仓库-概述-读书笔记一
数据仓库-DW/BI架构对比-读书笔记二
数据仓库-事实表/维度表技术-读书笔记三
维度处理-数据仓库-读书笔记(四)
数据仓库-高级事实表技术-读书笔记五
数据仓库-高级维度表技术-读书笔记六
数据仓库,零售业务举例,维度模型设计4步骤,读书笔记(七)
数据仓库-零售业务举例维度表设计细节-读书笔记(八)
数据仓库-零售业务举例如何提高仓库扩展能力-读书笔记(九)
数据仓库-零售业务中库存如何设计-读书笔记(十)
如何使用缓慢变化维技术


数据僧 参考资料

数据仓库工具箱


如果您觉得我用心了,觉得您有所收获,麻烦关注下我吧,您的关注就是我的动力,因为有你,我就不是一个人在前行。

欢迎来找 数据僧 一起探讨大数据相关的问题。评论区留言,我们一起讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容