我正在运行Analysis Services 2008 R2并且遇到了一些我真的不理解的行为,而且我似乎无法深入了解它。我有一个名为Segment的维度,它是一个简单的父子维度,其中只有四个顶级成员中的一个拥有任何子级。这一个成员,有两个孩子。只有叶节点有任何值。
在维度中我使用了AttributeAllMemberName来允许“All Segments”用于引用顶级成员。多维数据集中使用了三个维度:细分,国家和年份。
当我跑步时:
SELECT {{Descendants([Country].[Global],, SELF_BEFORE_AFTER)}} ON ROWS,
{[Segment].[All Segments].children}*{[Measures].[Volume tonnes]} ON COLUMNS
FROM [Market]
WHERE [Year].[2012]
我看到列上的所有成员,但是有子节点的一个节点有一个空列。我的理解是“孩子们”应该只向我显示一个级别而不是两个级别。另一方面,如果我跑
SELECT {{Descendants([Country].[Global],, SELF_BEFORE_AFTER)}} ON ROWS,
{[Segment].[(all)].[All Segments].children}*{[Measures].[Volume tonnes]} ON COLUMNS
FROM [Market]
WHERE [Year].[2012]
我完全看到了我的期望;具有正确聚合值的四个顶级子项,用于具有其自己子项的一个子项。没有显示大孩子。在任何一种情况下,都会显示正确的行数。
两个查询之间的唯一区别是“[(all)]”级别已在第二个查询中明确列出。鉴于“all”成员被定义为“(所有)”级别集的唯一成员,这两个查询应该返回相同的值,但它们不会。我必须在维度配置中遗漏一些东西,但是什么?有人能指出我正确的方向来解决这个问题吗?我需要查询才能正常工作,而不必使用“[(all)]”。
为了阻止这个帖子变得过于臃肿,我已经在我自己的网站上发布了一些BIDS屏幕,以显示维度的配置。有三个属性,维度本身需要配置,但我只能发布两个链接,因此已将这些链接全部链接到此页面:http://coolwire.co.uk/share/BIDS.html
层次结构和排序通过严格的属性关系与Key相关。
这一切对我来说都没问题,但问题必定在这里。