急! 一个数据仓库设计问题:地区维度
2010-10-30 19:04 崔浩 阅读(1589) 评论(1) 收藏 举报最近做一个数据仓库项目,遇到地区级别不确定这个问题(是否可以说是 维度层次不确定?),问题详细描述:
事实表-->案件
维度表-->地区
最初设计:

维度表“DIM-地区”数据(数据层次整齐):
--表1
说明:街道办事处为镇级
然而,ETL后发现事实表“FACT-案件”的数据量只有数据源(一个MIS系统的数据库)数据量的一半。这是因为事实表“FACT-案件”中的[事发地代码]只能对应维度表“DIM-地区”中的[乡镇代码],而数据源中的有大量的[事发地代码]存储的是[县/市代码]、[地市代码](那个MIS系统不要求地区必须选择到乡镇一级,可以选择市级、县级。有些案件的确是全市或全县范围的,数据源有这样的数据没有问题)。
这样,又有了如下设计:

维度表“DIM-地区”数据(数据层次不整齐):
--表2
说明:地区代码是维度表的主键,可以是市、县、镇三级的任意一级的代码
在维度表“DIM-地区”中加入[地区代码]作为主键,这时候[地区代码]可以是乡镇级、县级、市级的对应代码,只是[地区代码]是县级代码时,乡镇级对应字段就为空了,[地区代码]是市级代码时,县级、乡镇级对应字段为空。
经过以上步骤,ETL后的数据就基本满意了,接下来是多维分析。
多维分析之后问题又来了:如表2的数据,假设以上数据为全部地区数据,多维分析的描述如下:
财产损失
江苏省 【江苏省总的数据统计正确】
南京市 1495 【看似对了(1080+415),但没有加南京市对应的损失530,实际财产损失应为1495+530】
鼓楼区 329 【鼓楼区对应的损失为86,实际财产损失应为329+86=415】
琵琶街道办事处 329
溧水县 957 【溧水县对应的损失为123,实际财产损失应为957+123=1080】
永阳镇 458
白马镇 499
有人可能会说这样重复统计了,但需求的情况是:的确有一些案件是以市、县作为地区记录的,这些案件县、镇级地区不记录。
这就如同一个销售经理A,手下有3个人(B、C、D),同时A自己也做销售,这样每个人都有自己的销售额(a、b、c、d),但是最后总的统计销售经理A的销售额时应该是(a+b+c+d)而不是(b+c+d)。
这样的问题该如何解决呢?
是重新设计地区维(如何设计)?
在现在的基础上修改(怎么修改)?
浙公网安备 33010602011771号