0

我想根据当前行计算一个 Measure。问题是我找不到在 WITH MEMBER 部分中获取当前行的方法。

WITH MEMBER [Measures].[Test] AS AVG(
    NonEmptyCrossJoin(
                FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF),
                       [Exigences].CurrentMember.Name = 'Chemicals'),
                DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)),
    [Measures].[ProgressLevel])

SELECT {[Measures].[ProgressLevel], [Measures].[Test]} ON COLUMNS,
DESCENDANTS([Exigences].[ENVGR].[ENVGR-01.001], [Levier], SELF) ON
ROWS FROM [Exigences]

化学品目前是硬编码的。这就是例子。我想用当前行值代替“化学品”。

因此,假设这些值行将返回“化学品”、“药房”、“测试”,我希望 [Measures].[Test] 计算发生变化。

MDX 能做到吗?如果是这样,我怎样才能获得当前值。

我尝试了 [Levier].CurrentMember.Name,但我认为它与 [Exigences].CurrentMember.Name 冲突。

有人有想法吗?

谢谢,

4

1 回答 1

2

这需要一些努力,但这是拥有漂亮金徽章的优势。我们正在使用MDX 生成函数和命名集(链接中的 myCellSet 和 2d 示例):

不确定这是否适用于您的提供商,但您可以试试这个:

WITH MEMBER [Measures].[Test] AS AVG(
 NonEmptyCrossJoin(
            Generate( {[Exigences].CurrentMember} as MyCellSet,
              FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF),
                   [Exigences].CurrentMember.Name = MyCellSet.CurrentMember.Name)
            )
            ,
            DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)),
 [Measures].[ProgressLevel])
于 2011-08-12T09:37:48.120 回答