【问题标题】:LastChild simulation in MDX - Multiple hierarchiesMDX 中的 LastChild 模拟 - 多个层次结构
【发布时间】:2011-11-02 18:36:54
【问题描述】:

我有一个 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;

【问题讨论】:

    标签: ssas mdx css-selectors


    【解决方案1】:

    大卫,

    1) 您将作用域用作计算成员。您可以通过声明仅在子立方体中工作的范围来摆脱您的 iif:

     scope ([Measures].[Equity Value],[Calendar].[By Calendar Year].levels(0).... )
      This = (the expression)
    

    2) 不确定是否理解您的问题,但具有相同维度的两个层次结构的两个成员的元组可以通过构造为空:例如,您的日历的第一天(2010 年 1 月 1 日)和第一天您的会计日历(例如 2020 年 1 月 6 日)不是同一天,因此实际上为空。相同维度的两个层次结构只是表示相同坐标(这里是天)的方式,您通过声明一个元组来进行交集。

    不确定我是否在帮助你...

    【讨论】:

      【解决方案2】:

      感谢您的尝试!我明白你的意思(我认为)。 MDX 是一门难懂的语言!

      我最终通过作为度量来源的视图进行分配,并为度量保留 LastChild 聚合函数。最后,它更容易,查询性能也更好。

      还是谢谢:)

      【讨论】:

        猜你喜欢
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多