Hadoop develop

博学笃志,切问近思,此八字,是收放心的工夫。 神闲气静,智深勇沉,此八字,是干大事的本领。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、背景

  数据仓库建模过程中,针对事务型事实表设计,经常会遇到维度属性选择的问题,比如客户维度,在操作型系统中,为了跟踪客户状态的变化,往往会附加客户记录的四个属性:

      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。

posted on 2015-05-13 16:18  张子良  阅读(1088)  评论(1编辑  收藏  举报