我正在尝试在评估Pentaho Analyzer时获得计算量。
点:需要有条件的措施。我的代码:
IIf ([Product].CurrentMember Is [Product].[Food], [Unit Sales], 0)
所以我得到了:
饮料0
食物14其他0
结束只有 才能在行或列上显示
但是当我插入另一个切片器,并删除[Product](例如[Partner])时,我得到:
IBM 0
MS 0
Apple 0
代替:
IBM 7
MS 2
Apple 5
我知道,主要问题是 CurrentMember 属性,并且它始终为零,因为给定维度上有CurrentMember。请不要回答:'过滤它“食物”' 因为我正在努力构建更复杂的东西,这是第一步。
是否有任何技巧可以使这项措施有效?
修改 我有3个维度:产品,合作伙伴,国家 我需要通过mdx公式计算得到的度量: [单位销售]当它是[产品]。[食品]和[产品]。[饮料],它不是[国家]。[美国]和[国家]。[DE],但其他一切。
谢谢, 最诚挚的问候
答案 0 :(得分: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
- 或者是零元素 - 以防万一该元素不包含在集合中。