博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《分析服务从入门到精通读书笔记》第一章、代理键和渐变维度(5)
阅读量:6503 次
发布时间:2019-06-24

本文共 1241 字,大约阅读时间需要 4 分钟。

使用整数键值代表维度成员的一个原因是减少事实表的大小。同样,整数键允许将看似重复的成员存储在同一个维度表中。例如,在“顾客”维度中,可以有两个都叫Tom的顾客,但每个人都分配了唯一的“顾客”键,保证了维度表中成员键只出现一次。

当然,由于数据仓库是通过提取业务系统的中数据产生的,上述两个Tom毫无疑问已经有了唯一的键值。其中一个可能是C12323A,另一个可能是F23454B。这些键称作为程序键(application key)或业务键(bussiness key),因为他们来源于用于经营业务的应用程序键。数据仓库为何还要产生新的代理键呢?有三个理由:

<1>代理键可以使整数

<2>代理键使能够整合来自多个系统的数据

<3>代理键拥有渐变维度

即应用程序键不是整数,代理见也可以是整数。这能使数据仓库的事实表占用更小的空间。存储如54352这样的整数占用的空间比存储C125423A这样的字符串更小。当然这是创建代理键的次要原因。

数据仓库整合来自多个系统的数据。源系统常常对相同的维度成员使用不同的应用程序键,或者相反,对不同的维度成员使用相同的应用程序键。如果为每个维度成员产生代理键,则可以不用依赖于应用程序键。例如,在销售系统中,产品应用程序键A543可能指代一辆Mountain-500的自行车;而在制造系统(由完全不同的一群人创建的)中,产品应用程序键A543可能会只带一辆Road-650的自行车。一个更普通的例子是两家公司合并。在母公司的销售系统中,顾客C125423A指的是John Smith,而在子公司的销售系统中,C125423A可能巧合的指的是Abigail Torres。甚至每个美国人唯一拥有的社会保险号也能被授权给另一个人使用。如果政府确定原来拥有这个号码的人已经死亡。在数据仓库使用代理键能预防这样的不测事件。

在数据仓库中使用代理键最具说服力的原因是处理属性随着时间改变的情况。属性值随着改变的维度称作渐变维度(slowly changing demension).例如,去年Hitch Rack的标价是110美元,但今年变成了120美元。在订单系统中,只要在主产品清单里将标签才从110美元改成129美元,新的订单就会使用新的价格。在数据仓库中,则需要考虑历史因素。是假设Hitch Rack总是按120美元销售的还是反映去年的价格是110美元的相关情况。如果简单的使用应用程序键来代替Hitch Rack,就没有过多的选择。然而,如果有预见性的为该产品创建了代理键,当标价变化时,只需要用新的代理键来创建新的记录,来表示完全相同但只是更贵的Hitch Rack,同时将应用程序键作为另一个属性保存。对单个产品、顾客或其他维度成员来创建多个实例(instance),这得益于代理键的使用。这对于在数据仓库中维护历史信息也是特别重要的。

代理键使大多数数据仓库设计中的关键一部分。这样事实表的外键和维度表中的主键才能完全受数据仓库的控制。

 

转载地址:http://romyo.baihongyu.com/

你可能感兴趣的文章
swift版的元组
查看>>
[zz]在linux中出现there are stopped jobs 的解决方法
查看>>
Delphi下实现全屏快速找图找色 一、数据提取
查看>>
查询表字段信息
查看>>
logback与Log4J的区别
查看>>
关于机器学习的最佳科普文章:《从机器学习谈起》
查看>>
咏南新CS三层开发框架
查看>>
dxFlowChart运行时调出编辑器
查看>>
TDiocpCoderTcpServer返回数据记录有条数限制的问题
查看>>
NET Framework 3.0 (WinFX) RTM发布
查看>>
图片拼接器
查看>>
C++ TinyXml操作(含源码下载)
查看>>
读取swf里所有类定义
查看>>
DOWNLOAD 文件
查看>>
rp2833 网卡以及串口与接插件位置关系
查看>>
ogre场景图与场景内容分离
查看>>
中断小笔记
查看>>
C#委托、事件、消息(入门级)
查看>>
通信常用概念
查看>>
FreeBinary 格式说明
查看>>