1

我试图在评估 Pentaho Analyser 时计算出测量值。

要点:需要有条件的度量。我的代码:

IIf ([Product].CurrentMember Is [Product].[Food], [Unit Sales], 0)

所以我得到:

饮料 0

食物 14

其他 0

仅在[Product] 维度出现在行或列上之前,它才有效。

但是当我插入另一个切片器并删除 [Product] (例如 [Partner] )时,我得到:

IBM 0

女士 0

苹果 0

代替:

IBM 7

女士 2

苹果 5

我知道,主要问题是CurrentMember属性,它始终为零,因为在给定维度上有 CurrentMember。请不要回答:“在“食物”上过滤它”,因为我正在尝试构建更复杂的东西,这是第一步。

有什么技巧可以让这个 Measure 工作吗?

编辑: 我有 3 个维度:产品、合作伙伴、国家我需要通过 mdx 公式计算度量来获得:当它是 [产品].[食品] 和 [产品].[饮料] 而不是 [国家/地区].[US] 和 [Country].[DE] 但其他一切。

谢谢,最好的问候

4

1 回答 1

2

我不是 Pentaho/Mondrian 的专家,但我认为问题是在您的第二种情况下,它[Product].CurrentMember是产品的所有成员,而不是Food成员,因此系统按照您告诉它的方式运行,并返回 0。

根据我对您的问题的理解,例如

IIf(
    Count(
        Intersect(
            { [Product].CurrentMember },
            { [Product].[Food], [Product].[Drink], [Product].[All] }
        )
    ) = 1
    AND
    Count(
        Intersect(
            { [Country].CurrentMember },
            { [Country].[US], [Country].[DE], [Country].[All] }
        )
    ) = 0
    [Unit Sales],
    0
   )

应该提供你想要的。这里的技巧是,包含 的单元素集合与另一集合之间的交集CurrentMember可以有一个元素(如果CurrentMember包含在集合中)或零元素(如果元素不包含在集合中)。

于 2014-02-04T12:45:11.963 回答