2016-03-25 9 views
1

Ich verwende Pentaho Mondrian, um einen Fakturierungswürfel mit den Dimensionen "Land" und "Referenz" zu erstellen. Zu einer meiner Rollen, ich möchte nur den Referenzwert anzeigen, wenn Land gleich "Brasilien" ist. Wenn es nicht Brasilien ist, sollte die Referenz null sein.Pentaho Mondrian- Ausblenden eines Dimensionswerts aus einer Rolle

wie es ist: http://i.stack.imgur.com/yipPJ.png

Wie es sein sollte: http://i.stack.imgur.com/PoF2w.png

Wie kann ich das tun?

Ich versuchte, ein berechnetes Mitglied mit CASE WHEN zu verwenden, aber es hat nicht funktioniert. Soll ich stattdessen IIF verwenden? diese

I-Code, aber es funktioniert nicht zu:

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]; 

Hat jemand weiß, wie dies zu tun?

Antwort

0

Ein paar Hinweise:

So müssen Sie den IS Operator verwenden, wenn Sie für die Gleichstellung mit einem Mitglied überprüfen möchten.

Anstatt dies:

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

Sie verwenden die folgende - Sie könnten die RHS mit der genauen vollständigen Namen Ihres Brasilien Mitglied ändern müssen:

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

Rather als mit '' sollten Sie NULL verwenden.

Anstatt dies:

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

sollten Sie verwenden:

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

Sie richtig sind IIF zu verwenden, anstatt CASE wenn überhaupt möglich - IIFallgemein funktioniert besser.


Von der Screenshots sieht es für mich, dass Sie Länder wollen ON ROWS statt ON COLUMNS:

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

Jetzt SSAS gegen den AdvWrks Würfel verwendet, kann ich dies tun:

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]; 

Welche Ergebnisse in diesem:

enter image description here