2016-03-25 8 views
1

私はペンタホ・モンドリアンを使用して、次元「国」と「参照」を持つ請求キューブを作成しています。 私の役割の1つに、countryが "Brazil"に等しいときに参照値を表示したいだけです。ブラジルでない場合、参照はnullにする必要があります。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]; 

は、誰かがこれを行う方法を知っていますか?

答えて

0

いくつかのポインタ:

ですから、あなたがメンバーとの等価性をチェックしたい場合はIS演算子を使用する必要があります。これよりもむしろ

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

は、次を使用 - あなたはブラジルのメンバーの正確なフルネームでRHSを修正する必要があるかもしれません:

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

むしろ''を使用するよりもNULLを使用する必要があります。これよりもむしろ

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

あなたはこれを使用する必要があります。

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

あなたはIIFを使用するのではなくCASEですべての可能な場合には、正しいです - 一般IIFが優れています。あなたのスクリーンショットから


それはあなたが国ON ROWSではなくON COLUMNSを望むように私には見えます:

今、私はこれを行うことができます AdvWrksキューブに対して SSASを使用して
SELECT 
    NON EMPTY 
    {} ON COLUMNS 
,NON EMPTY 
    [dim_country.country].[country].MEMBERS ON ROWS 
FROM [billing_entry]; 

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

結果は次のとおりです。

enter image description here

関連する問題