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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MDX对一个维层次结构中的所有值求和相关的知识,希望对你有一定的参考价值。

我是MDX新手。我在Visual Studio Business Intelligence环境中使用Team Foundation Server中的Team System Cube。我的问题听起来很容易,但我不知道解决方案。

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),可以安排映射吗?例如。

DIMENSION1:

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

DIMENSION2:

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

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

非常感谢您的期待

欧根

答案

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

Sum(Ytd([Dim Time].[PlannedWeek__HierarchyByWeek].CurrentMember))

要么

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

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

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

以上是关于MDX对一个维层次结构中的所有值求和的主要内容,如果未能解决你的问题,请参考以下文章

SSAS MDX WHERE 子句语法 - 从同一层次结构中过滤多个值

具有多个属性层次结构的计算成员 - MDX

MDX 排除层次结构中存在值的结果

如果当前成员有孩子,则展开用户层次结构 - MDX

如何根据 mdx 中的另一个维度层次结构过滤维度层次结构

MDX 计算成员不允许多个层次结构元组