如何在 mondrian mdx 公式中使用 IsLeaf?

How to use IsLeaf in mondrian mdx formula?

尝试在 Pentaho Mondrian Cube 中重新创建此公式。

iif(ISLEAF([时间].[月].CurrentMember)),[措施].m1,0)

此公式已在 SSAS 多维数据集中使用。需要在 Pentaho Mondrian Cube 中重新创建类似的公式。

IsLeaf 可以在 mondrian 中使用还是有其他替代方法?

像下面这样的东西应该可以在默认层次结构中的任意级别工作。

它将 return [Mesures].m1 用于最后一年,如果您 select [Time].[Year] 成员(具有非空 m1 测量并满足您的过滤条件) .

或者它会 return 去年最后一个月的度量,如果你 select [Time].[Month] 成员,它有非空的 m1 度量。

虽然我不认为如果您混合不同级别的成员(例如 WITH SET time_members AS {[Time].[2017], [Time].[2017].[1]. [Time].[2017].[1].[31]}

如果您不需要这种通用的方法,那么这个解决方案可能会得到简化,并可能会提高度量计算速度。

警告:查询可能会导致 100% CPU 利用率(或者可能不会,我不确定),从而使您的服务器无响应。所以,慎重选择你的测试环境。

免责声明:我暂时没有mondrian可以测试,所以下面的例子很可能有错误。

Iif(
    // Check if current [Time] member is the last member:
    [Time].CurrentMember
    IS
    // Take the 0th member from the end of the set (AFAIK, mondrian sets are guaranteed to be ordered):
    Tail(
        // AFAIK, Level.Members returns the full set of members, disregarding query filters.
        // So I use Filter function to filter members, which don't exist in context of current cell.
        // It should leave only members, which (are related to current cell and satisfy filter conditions of the query).
        Filter(
            [Time].CurrentMember.Level.members
            // If your measure is nullable, then you might want to use count measure in this condition instead of m1:
            , NOT IsEmpty([Measures].m1)
        )
        // Number of members to get by the Tail() function:
        , 1
        // Return the only member of the set as a Member (not as a Set):
    ).Item(0)
    // return if true
    , [Measures].m1
    // else:
    , 0
)

一些可能有问题需要测试的点:

  1. 最后一个[Time]成员m1为空时如何计算度量 测量(如果这是您测量的有效案例)

  2. 如何在 [时间] 的不同级别计算度量 层次结构。

  3. 如果不使用 [Time] 维度,度量是如何计算的 明确报告。

  4. 如果在切片器上使用 [时间] 维度,则如何计算度量 仅轴(在 WHERE 条件下)

  5. 如果使用 [Time] 的限制集,度量是如何计算的 成员,例如显式枚举集合文字中的成员(例如 {[Time].[2006].[01], [Time].[2006].[02]}) 或通过使用 Filter() 维度上的函数。

  6. 如果您在其他设备上使用 fiter,该度量是如何计算的 dimensions/measures.

  7. 如何在 [Time] 的计算成员处计算度量值 维度(包括 Analyzer 生成的总计和小计)。

  8. 如果 select 来自不同国家的成员,如何计算度量 水平在同一轴上。