2016-06-15 16 views
0

SSAS MDX算出フィルタ

select saldi 
where rek in (4,8) 
and rek5 <> 41111 
and rek3 not in (a,b,c) 

次のMDX、フィルタ(4,8)<> 41111、機能していません。私が41111フィルターを取り除くと、小節がうまく動作し、ちょうど4/8が表示されます。 41111を '<>'フィルターとして追加すると、結果は空白になります。

THIS = IIF(
    ([Rekeningen].[Rek n1].CurrentMember = [Rekeningen].[Rek n1].&[4] 
     or [Rekeningen].[Rek n1].CurrentMember = [Rekeningen].[Rek n1].&[8]) 
    and [Rekeningen].[Rek n5].CurrentMember <> [Rekeningen].[Rek n5].&[41111] 
, 
    [Measures].[Saldi], 0.00 
); 

私はGoogleを試しましたが、キーワードを正しく取得していないようです。 social.msdn.microsoft.comでは、多くの反応が答えとしてマークされていますが、これまでのところ私にとってはそうではありません。 ssasキューブを配備するとエラーは発生しません。

誰かが正しい方向に向けることができますか?私はExceptを試しましたが、そのコマンドはマルチフィールド(rek3/rek5)で動作しないようです。

答えて

0

ISおよびNOT ISは、メンバーを比較するときに使用されます。それは私たちにこれを与える:

THIS = 
    IIF 
    (
     (
     [Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].&[4] 
     OR 
     [Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].&[8] 
    ) 
    AND 
     [Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111] 
    ,[Measures].[Saldi] 
    ,0 
); 

よりもむしろ0あなたはほとんど常に、キューブスクリプトCALCSでnullを使うべきか、パフォーマンスを殺す:

THIS = 
    IIF 
    (
     (
     [Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].&[4] 
     OR 
     [Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].&[8] 
    ) 
    AND 
     [Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111] 
    ,[Measures].[Saldi] 
    ,NULL 
); 

私はこれらのメンバー名について確信していませんか? [Rekeningen].[Rek n1].CurrentMemberおよび[Rekeningen].[Rek n1].&[4]。詳細な回答のため

1.

THIS = 
    IIF 
    (
     (
     [Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].[Rek n1].&[4] 
     OR 
     [Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].[Rek n1].&[8] 
    ) 
    AND 
     [Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].[Rek n5].&[41111] 
    ,[Measures].[Saldi] 
    ,NULL 
); 

または

2.

THIS = 
    IIF 
    (
     (
     [Rekeningen].CurrentMember IS [Rekeningen].[Rek n1].&[4] 
     OR 
     [Rekeningen].CurrentMember is [Rekeningen].[Rek n1].&[8] 
    ) 
    AND 
     [Rekeningen].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111] 
    ,[Measures].[Saldi] 
    ,NULL 
); 
+0

ありがとう:私は、彼らがかもしれないと思う二つの選択肢を追加してみましょう。 @whytheq "IS NOT"でないと解析エラーが発生しましたか? 問題を解決したためにこれを回答としてマークしますが、機能的にはキューブ内の機能を実行できませんでした。私は私の質問を再考し、新しい言葉を投稿します。 –

+0

@FabioBrunaは解析エラーをお詫びします。私は答えを編集しました。はい、かなり頻繁に私はOKを実行するmdxを取得しますが、私が期待している数値を返すことはありません:通常私はスクリプトをはるかに小さな塊に分割し、彼らがどのようなデータを返すかをテストします...期待どおりに行動しています。 – whytheq

関連する問題