您的位置:首页 > 其它

维度用法设置不当导致的数据无法正确聚合的问题及解决

2008-12-10 22:31 736 查看
这几天在学习过程中出现了一个数据无法正确聚合的问题。花了很多时间去分析MDX代码都没有发现什么问题,最后在网上询问后才发现问题出在数据立方那里,问题在于MDX查询中涉及到的度量值和维度之间没有关联。设置了它们之间的关联后,就可以正常聚合数据了。

MDX Query 2
WITH MEMBER [Measures].[Sale Amount Ratio] AS
'[Measures].[Unit Sales]/([Measures].[Unit Sales], [Product].[Product Category - Product Class].[All])' ,
FORMAT_STRING = '0.00%'
SELECT
{
[Measures].[Unit Sales],[Measures].[Sale Amount Ratio]
} ON COLUMNS,
NON EMPTY
{
[Product].[Product Category - Product Class].[Product].Members
} ON ROWS
FROM [Warehouse and Sales]



图二:数据正确聚合时的情况

其原因可见图三:



图三:MDX查询所对应的数据立方的维度用法情况

由图三中的矩阵可见[Warehouse]维度与[Sales]度量值组之间是没有关联的,所以无法通过[Warehouse]维度来聚合数据,而[Product]维度和[Sales]度量值组之间有常规的关联,所以第二段代码可以正确地计算。由此可以看出,维度用法设置会影响查询的正确性。维度用法中有常规、多对多、引用、数据挖掘等这些类型的关联。其中常规类型是指最普通的维度与事实表之间的关联,即事实表中的外键属性引用维度表中的主键属性;多对多是指维度表与一个中间事实表关联,而这个中间事实表又与一个中间维度表关联,这个中间维度表直接与目标事实表关联,也就是说在分析所需要的维度表和事实表之间又隔了一个事实表和维度表(不知道这里可不可以推广一下,即在中间事实表和目标事实表之间不止一个中间维度表,而是多个关联引用的维度表,我想应该是可以的,因为这些维度表之间如果有引用的话就可以通过一个表获知另一个维度表的数据,这样一层层的推下去其效果应该和只有一个中间维度表相同,有待证实);引用类型就是指在维度表和事实表之间间隔有一个维度表,这个维度表与分析要使用的那个维度表之间有引用关系(和多对多类型一样,这里我想也可以推广)。

对于本文所提到的问题,经分析其数据源视图后发现[Warehouse]维度与[Sales]度量值组之间有多对多的关联,因此做对应的修改之后,问题解决。结果如下图。



图四:修改维度用法之后的结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐