一、背景
数据仓库建模过程中,针对事务型事实表设计,经常会遇到维度属性选择的问题,比如客户维度,在操作型系统中,为了跟踪客户状态的变化,往往会附加客户记录的四个属性:
1.add time:添加时间;
2.add user:添加用户;
3.mod time:修改时间;
4.mod user:修改用户;
问题在于,当我们进行维度建模的时候,如果以客户作为维度,是否应该考虑以上四个属性?
二、观点
1.应该保留
(1)我觉得 添加时间 可以作为维度属性,以后可能进行相关的统计;
2.不应该保留
(1)在按主题重新设计模型时,一般业务不需要保留;
(2) 以经验看,添加时间,修改时间,一般都是必须的。 而,添加用户,修改用户,这个就需要看实际是否有相应的需求,选择性添加(可预期的需求,也需要考虑进去)
(3)这个感觉并不是维度,可以用缓慢变化维解决,维度本身的意义应该在于后续的汇总分析;
(4)一般这里讲的数据是业务度量,scd记录变化也是为了历史的维度视角反映业务事实;
3.按照需求来定
(1)一般都是需求来定的吧,没有什么具体标准;
(2)业务驱动吧;
(3)这个要根据实际需求来看: 如果有这么个需求: 根据新增客户数作为考核指标,来考核员工。。那么这个字段是必须的,添加时间和添加用户,这两个字段就是必须;
4.其他
(1)我觉得维度除了时间之外都应该是名词性的东西 而不是一个动作;
三、建议
正本溯源,要想搞清楚这个问题,还是要回到维度的定义上来。维度是用来对数据进行分类的结构和人们观察业务情况的角度.关于维度的定义至今未看到统一的行业标准。在此选取Kimball的说法:“维度提供围绕某一业务过程所涉及的‘谁、什么、何处、何时、为什么、如何’等背景。维度表包含BI应用所需要的用于过滤及分类事实的描述性属性。
四、未完待续
分布式数据仓库数据存储模型设计进行中,后续会持续更新,请关注QQ群:分布式数据仓库建模 398419457。
原文地址:http://blog.csdn.net/hadoopdevelop/article/details/45694915