维度用法设置不当导致的数据无法正确聚合的问题及解决
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]度量值组之间有多对多的关联,因此做对应的修改之后,问题解决。结果如下图。
图四:修改维度用法之后的结果
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]度量值组之间有多对多的关联,因此做对应的修改之后,问题解决。结果如下图。
图四:修改维度用法之后的结果
相关文章推荐
- 解决android开发中无法trycatch到由唯一性约束导致的数据库insert不进数据erro的问题
- 数据类型转换不当导致数据库不能正确插入数据问题
- 【DataGuard】由于备库参数设置不当导致数据文件无法添加的故障分析
- 解决因传输模式设置不当致FTP无法连接的问题
- 解决vue跨域请求无法携带cookie,进而无法在服务器端设置session保持数据(状态)的问题
- 解决WinForm中ComboBox控件的“设置"DataSourse”属性后无法修改项集合”以及两个不相关联的ComboxBox控件实现数据列表显示不可实现的问题
- IE6下,设置了domain,导致target指向iframe时,无法打开链接的问题及解决
- 解决ASP.NET MVC的FileStreamResult无法正确返回数据问题
- axios解决OPTIONS问题,导致后台无法接收到数据
- 解决虚拟内存设置错误导致的系统蓝屏无法启动问题
- Ubuntu 锁定屏幕后即使输入正确密码也被提示密码错误导致无法解锁 问题的解决
- 解决服务器无法在已发送 HTTP 标头之后设置状态导致的一个问题
- HttpWebResponse无法准确获取CharacterSet导致网页数据乱码问题的解决
- MYSQL主机Master磁盘写满,导致主从数据无法同步各种问题解决
- 风云防火墙导致无法上网的问题解决(无法获取正确的网关MAC)
- 数据值为NULL,导致条件查询不到正确结果,ISNULL函数的使用解决问题
- win7最大内存设置问题,导致系统无法启动的解决方法
- 备忘:有MTU值设置不当导致的部分网站无法访问问题
- Session设置不当导致API变成单线程问题的解决
- CentOS 设置静态IP, 无法正确获取网关的问题解决