首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

多层次渐变维度且封存历史的难题

2013-01-02 
多层次渐变维度且保存历史的难题表的结构中包含一个维度层次关系:区-街道-社区,即区下面管理多个街道,街道

多层次渐变维度且保存历史的难题

   表的结构中包含一个维度层次关系:区-街道-社区,即区下面管理多个街道,街道下面又管理多个社区。另外事实与此维度表关联的字段是代理键。
   在渐变维度管理开始时,只有红色框中的部分,并且生效结束日期是NULL。在设置维度关系时,设置代理键为主键,区代码、街道代码、社区代码为三层的层级关系,显示名称分别为对应的区名称、街道名称、社区名称。发布处理到分析服务正常可用。
    在2010-12-1日街道“坪山”名称改成了“坪山0”,渐变维度处理将老的(红框)中的记录街道是坪山的生效结束时间改成“2010-12-1”,并在数据库中添加了新的“坪山0”的记录,并标其实日期为2010-12-01(只更新了坪山对应的,其他的没变化)。
    此时如果更新“数据立方”到分析服务时,会报错,错误是查找有重复的记录。
http://blog.programmingsolution.net/ssas-2008/period-dimension-time-dimension-creation-with-year-month-day-hierarchy/ 这篇文章得出灵感,设置属性区代码、街道代码、社区代码的键列为符合键(代码与生效起始日期的复合键),这样就可以正常更新处理到分析服务器了。
   但查询2010-12-1日的事实表统计结果时,如果用“区”级别去统计结果,会有两个“龙岗”,这种现象很好理解。对于2010-12-1日的事实表中的数据,与上面维度进行关联,而这些维度记录,有一部分其实生效日期是2010-11-30,一部分是2010-12-1日(只有“坪山”的数据)的。
    可是怎么样才能只出现一个“龙岗”呢?对于保存历史维度的,且存在多个层次的情况通常怎么处理呢?
(其实我也想过一个办法,就是只要出现维度要改变,则全部更新,即把老的最终修改日期全部改成2010-12-1日,再将维度数据重新全部插入进来,这样就可以解决问题,想看看高手们的意见)

[解决办法]
应该还有一列,标记为当前行
这样你就只要查找当前行的就可以了

热点排行