我有一个SSAS多维数据集,其中有一个度量值需要通过位于另一个度量值中的百分比进行分配。我将所有这些设置为我的"Equity Amount“度量中的度量表达式,它工作得很好。
我的问题是这个"Equity Amount“度量实际上是一个快照,所以我需要使用LastChild函数对其进行聚合。事实证明,在半加性度量中不能有度量表达式,所以我尝试在MDX中伪造LastChild函数。
我在网上看过很多例子,但没有一个谈到在date维度中有多个层次结构。我有“日历年度”和“财政年度”两个层次结构。
我的MDX只适用于一个层次结构,但一旦我确定了第二个层次结构的范围,第一个层次结构就会被覆盖。我猜我需要在一条语句中处理这两个层次结构,但我真的很难让它工作。
这是我对一个层次结构的MDX。有没有人可以帮我修改它以适应多个层次结构,或者有没有其他方法可以解决我的问题?
Scope([Measures].[Equity Value]);
This = iif(isleaf([Calendar].[By Calendar Year].CurrentMember),
[Measures].[Equity Value],
([Calendar].[By Calendar Year].CurrentMember.LastChild,[Measures].[Equity Value]));
End Scope;发布于 2011-11-05 10:12:43
感谢您的尝试!我明白你的意思(我想)。MDX是一种很难处理的语言!
我最终通过我的度量值的源视图进行了分配,并保留了度量值的LastChild聚合函数。最后,它更容易,而且对查询性能也更好。
无论如何,还是要感谢:)
发布于 2011-11-05 00:46:46
大卫,
1)您正在使用作用域作为计算成员。您可以通过声明作用域仅在子多维数据集中工作来消除iif:
scope ([Measures].[Equity Value],[Calendar].[By Calendar Year].levels(0).... )
This = (the expression)2)不确定是否理解您的问题,但具有相同维度的两个层次结构的两个成员的元组可以通过构造为null :例如,您的日历的第一天(1/1/2010)和您的会计日历的第一天(例如1/6/2020)不是同一天,因此实际上为null。同一维的两个层次结构只是表示相同坐标日期(这里是天)的方式,您可以通过声明一个元组来进行交集。
不确定我是不是在帮你。
https://stackoverflow.com/questions/7985589
复制相似问题