MDX对一个维层次结构中的所有值求和

时间:2013-08-26 10:47:34

标签: sum mdx dimensions

我是MDX新手。我在Team Foundation Server中使用Team System Cube Visual Studio商业智能环境。我的问题听起来很简单,但我不知道解决方案。

1)我有一个具有DateTime数据类型的字段。这个字段的一个维度(Hierarchy By Week)我用它来显示我的日历周 在我的报告中。现在我有一个第二个字段,它有一个整数数据类型(它是一个度量)。我创建了一些数据集,所以现在看一下:

  • 第1周:50
  • 第2周:34
  • 第3周:46
  • ...
  • 周n:nn

我理解第二个字段中值的分配以及维度上值的依赖性。我的要求,听起来很简单:我需要所有字段值的SUM,以便它看起来 如下表所示:

  • 第1周:200(54 + 34 + 46 + ...)
  • 第2周:190
  • 第3周:186

如果我总结一下,没有任何变化。

IIF(ISEMPTY([Measures].[RemainingWorkProductBacklogItem]) OR NOT Mid([Work Item].
[PlannedWeek__HierarchyByWeek].CurrentMember.UniqueName,58,10)
<= Format(Now(), "yyyy-MM-dd"), SUM( [Measures].[RemainingWorkProductBacklogItem]),NULL)

(Mid函数只显示实际值,它不应该在这里发挥作用。)

我也尝试过将YTD功能与sum函数结合使用但是我没有成功,仍然没有变化(它显示为null)。我可以使用任何功能,还是必须在立方体中进行更改?

2)一般来说还有一个问题:如果我有两个不同维度的两个字段(都是DateTime),可以安排映射吗? E.G。

Dimension1:

  • 第1周:数据
  • 第2周:数据
  • 第3周:数据

DIMENSION2:

  • 第2周:数据
  • 第3周:数据

两个维度都包含第2周和第3周。报告面向Dimension1,也可以显示Dimension2的数据吗? (我确定必须是可能的,我在多维数据集选项中搜索但没有找到它。)

非常感谢您的期待

欧根

1 个答案:

答案 0 :(得分:2)

1)Ytd只有在标记时间维度时才能正常工作(它必须是整个维度,而不仅仅是维度的某些属性作为时间,并为此维度的所有属性提供正确的类型。 type是为维度配置的,以及在BIDS中具有Type属性的属性。然后它只适用于你的多维数据集的第一个这样的维度。然后你会使用像

这样的东西
Sum(Ytd([Dim Time].[PlannedWeek__HierarchyByWeek].CurrentMember))

Sum(Ytd([Dim Time].[PlannedWeek__HierarchyByWeek].CurrentMember), [Measures].[RemainingWorkProductBacklogItem])

2)你绝对应该在你的多维数据集中有一个时间维度,包括年,季,月,周,日,工作日等属性(你不需要所有这些,但有些)。不要将其与其他属性混合使用。然后参考就会没有任何进一步的努力。我认为将几个事实表链接到此维度没有问题。而且您也可以将Ytd函数应用于此,因为您只有一个时间维度。

如果您的多维数据集设计错误,MDX会变得非常困难,比使用错误的表格设计的SQL要困难得多。