Ssas MDX中的LastChild模拟-多层次

Ssas MDX中的LastChild模拟-多层次,ssas,mdx,css-selectors,Ssas,Mdx,Css Selectors,我有一个SSAS多维数据集,其中有一个度量值需要通过位于另一个度量值中的百分比进行分配。我在我的“权益金额”度量中设置了所有这些作为度量表达式,它非常有效 我的问题是,这个“权益金额”度量实际上是一个快照,所以我需要它使用LastChild函数进行聚合。事实证明,在半加法度量中不能有度量表达式,所以我试图在MDX中伪造LastChild函数 我在网络上到处都看到了很多例子,但没有一个提到在日期维度中有多个层次结构。我有“日历年”和“会计年”层次结构 我的MDX只适用于一个层次结构,但一旦我确定了

我有一个SSAS多维数据集,其中有一个度量值需要通过位于另一个度量值中的百分比进行分配。我在我的“权益金额”度量中设置了所有这些作为度量表达式,它非常有效

我的问题是,这个“权益金额”度量实际上是一个快照,所以我需要它使用LastChild函数进行聚合。事实证明,在半加法度量中不能有度量表达式,所以我试图在MDX中伪造LastChild函数

我在网络上到处都看到了很多例子,但没有一个提到在日期维度中有多个层次结构。我有“日历年”和“会计年”层次结构

我的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;
大卫

1) 您正在使用范围作为计算成员。您可以通过声明作用域仅在子多维数据集中工作来摆脱iif:

 scope ([Measures].[Equity Value],[Calendar].[By Calendar Year].levels(0).... )
  This = (the expression)
2) 不确定是否理解您的问题,但具有两个相同维度层次结构的两个成员的元组通过构造可以为空:例如,日历的第一天(2010年1月1日)和财政日历的第一天(例如2020年1月6日)不是同一天,因此实际上为空。同一维度的两个层次结构是表示同一坐标系的唯一方式(在这里是天),通过声明元组进行交集


不确定我在帮你…

谢谢你的努力!我理解你的意思(我想)。MDX是一种强硬的语言

最后,我通过作为度量值源的视图进行分配,并保留度量值的LastChild聚合函数。最后,它更简单,而且查询性能也更好

无论如何,谢谢你:)