2016-04-04 22 views
0

私はSSAS CubeとDatazen(ダッシュボードの作成者)を使用しています。複数の値とnull値を持つパラメータを持つMDXクエリ

AgeClassCode: 'AGE01'、 'AGE02'、 'AGE03'、...

StatutCode:「私は3つのパラメータで(valueCode 'AZE' の)データビューをしましたA」、 'B'、 'C​​'、 'D'、...

NiveauCode: 'X'、 'Y'、 'W'、...このクエリで

、場合私は複数の値を使用するか、それぞれの値を1つだけ使用します。 しかし、私は、クエリは、パラメータの値がnullの場合、パラメータのすべての値を返すことを望みます。私は、のisEmpty(STRTOSET(@paramを))のisEmpty(@param)をテストしてみた...しかし、それは、このエラーを返します:

An mdx expression was expected. An empty expression was specified.

このクエリは、1つまたは複数の値のために動作します:

SELECT 
    NON EMPTY 
    { 
     [Measures].[Value], [Measures].[PreviousValueYear], [Measures].[PreviousValueReportMonth] 
    } ON COLUMNS, 
    NON EMPTY 
    { 
     NONEMPTY 
     (
      [EntiteFederal].[ServiceCode].[ServiceCode].ALLMEMBERS * 
      [EntiteFederal].[EntiteCode].[EntiteCode].ALLMEMBERS * 
      [ReportMonth].[ReportMonth].[ReportMonth].ALLMEMBERS * 
      [T].[Year].[Year].ALLMEMBERS 
     ) 
    } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
    FROM 
    ( 
      SELECT ({ [ValueType].[ValueCode].&[AZE] }) ON COLUMNS 
      FROM (
        SELECT (STRTOSET('{{ @AgeClassCode }}')) ON COLUMNS 
        FROM ( 
          SELECT (STRTOSET('{{ @NiveauCode }}')) ON COLUMNS 
          FROM 
          ( 
           SELECT ((STRTOSET('{{ @StatutCode }}')) ON COLUMNS 
           FROM [MyCube] 
          ) 
         ) 
       ) 
    )      
    WHERE 
    ( 

     IIF(STRTOSET('{{ @StatutCode }}').Count = 1, STRTOSET('{{ @StatutCode }}'), [Statut].[StatutCode].currentmember), 
     IIF(STRTOSET('{{ @NiveauCode }}').Count = 1, STRTOSET('{{ @NiveauCode }}'), [Niveau].[NiveauCode].currentmember), 
     IIF(STRTOSET('{{ @AgeClassCode }}').Count = 1, STRTOSET('{{ @AgeClassCode }}'), [AgeClass].[AgeClassCode].currentmember), 
     [ValueType].[ValueCode].&[AZE] 
    ) 

何を変更する必要がありますか?

EDIT:

(strtosetをテストする)

有効な表す文字列を指定する必要がありstrToMemberstrToSetを使用したりすると、良い解決策は

isError() 

答えて

1

あるmdx例えば、これらは大丈夫です:

は、文字列、またはMDXを表しものではありませんよう

これは有効ではありません。

strToSet(NULL) 

だからあなたのクライアントにあなたがNULLのすべてのメンバーを代表したいならば、何とかあなたが変換する必要がありますstrToSetに達する前にNULLを文字列 "[AgeClassCode]。[AgeClassCode] .members"に変換します。

+0

ソフトウェアを変更する方法はありません。私の次元に基づいた選択リストナビゲータです。値が選択されていない場合、エラーが表示されます。 また、パラメータAgeClassCodeを次のように変更しようとしました: 'IIF(ISEMPTY( '{{{@AgeClassCode}}))、[AgeClass]。[AgeClassCode] .Members、STRTOSET(' {{@AgeClassCode}} ')) ' 私はwhere句を削除しましたが、それでも同じエラーです。 – Huojian

+0

申し訳ありませんが、私はdatazenのインターフェースで遊んでいません。有効なMDX文字列をstrToSetまたはstrToMemberに渡す必要があります。何もしたくない場合は、 '{}}を入力するか、すべてのメンバーに' [AgeClassCode]。[AgeClassCode]。[AgeClassCode ].members'のようなものを追加してみてください。 NULLをstrToSet、strToMember、ISEMPTYに渡すと、すべて失敗します。 ISEMPTYには、引数として有効なmdx式が必要です。 – whytheq

関連する問題