1

我正在使用 Pentaho Mondrian 构建一个具有“国家”和“参考”维度的计费立方体。 对于我的角色之一,我只想在国家等于“巴西”时显示参考值。如果不是巴西,则参考应为空。

它是怎样的:http: //i.stack.imgur.com/yipPJ.png

应该如何:http: //i.stack.imgur.com/PoF2w.png

我怎样才能做到这一点?

我尝试在 CASE WHEN 中使用计算成员,但它不起作用。我应该改用 IIF 吗?

我对此进行了编码,但它也不起作用:

WITH 
  MEMBER [dim_reference.Reference].[reference].Members AS 
    IIF
    (
      [dim_country.country].[country].CurrentMember = 'Brazil'
     ,[dim_reference.Reference].[reference].MEMBERS
     ,''
    ) 
SELECT 
  NON EMPTY 
    {Hierarchize({[dim_country.country].[country].MEMBERS})} ON COLUMNS
 ,NON EMPTY 
    Order
    (
      {
        Hierarchize({[dim_reference.Reference].[reference].MEMBERS})
      }
     ,[dim_reference.Reference].CurrentMember.Name
     ,BASC
    ) ON ROWS
FROM [billing_entry];

有人知道该怎么做吗?

4

1 回答 1

0

几点建议:

1

IS因此,如果要检查成员是否相等,则 需要使用运算符。

而不是这样:

[dim_country.country].[country].CurrentMember = 'Brazil'

您使用以下内容 - 您可能需要使用您的巴西成员的确切全名来修改 RHS:

[dim_country.country].[country].CurrentMember 
       IS [dim_country.country].[country].[country].[Brazil]

2

而不是使用''你应该使用NULL.

而不是这样:

IIF(
      <condition>
     ,<if condition true>
     ,''
    )

你应该使用这个:

IIF(
      <condition>
     ,<if condition true>
     ,NULL
    )

3

您使用是正确的,IIF而不是CASE尽可能地使用 -IIF 通常表现更好。


从您的屏幕截图中,我认为您想要国家ON ROWS而不是ON COLUMNS

SELECT 
  NON EMPTY 
    {} ON COLUMNS
 ,NON EMPTY 
    [dim_country.country].[country].MEMBERS ON ROWS
FROM [billing_entry];

现在使用SSAS立方体AdvWrks我可以这样做:

WITH 
  MEMBER [Measures].[X] AS 
    IIF
    (
        [Customer].[Customer Geography].CurrentMember
      IS 
        [Customer].[Customer Geography].[Country].&[Australia]
     ,[Product].[Product Categories].CurrentMember.Name
     ,null
    ) 
  SET [s] AS 
      [Customer].[Customer Geography].[Country]
    * 
      [Product].[Product Categories].[category] 
  MEMBER [Product].[Product Categories].[All].[calc] AS 
    [Product].[Product Categories].CurrentMember.Name 
SELECT 
  {[Measures].[X]} ON 0
 ,[s] ON 1
FROM [Adventure Works];

结果是:

在此处输入图像描述

于 2016-03-28T09:58:05.327 回答