2017-01-25 4 views
1

私はSSRSレポートで使用しているmdxクエリを持っています。私は50歳以上の時間を返すだけですが、その年のデータがあるかどうかにかかわらず、すべての年を表示したいと思います。 50を超えるフィルタを動作させることはできますが、データがない場合は何年も失うことになります。私は年を "Pages"軸に置き、すべての年を返しますが、私の行軸はこれを行う際にフィルタを尊重しません。私は年次元をNONEMPTY節の外に置こうとしましたが、50時間を超えるフィルターを尊重しません。
ここでは、私がこれまで持っているもののサンプルです:MDX - 空と非空の両方を含む

SELECT 
    [measures].[Hours] ON COLUMNS 
, 
    [Date].[Year].[Year].ALLMEMBERS 
    * 
    { 
     Filter 
     (
     NonEmpty 
     (
      CrossJoin 
      (
      [Client].[Client].[Client].ALLMEMBERS 
      ,[Department].[Department].[Department].ALLMEMBERS 
      ,[Title].[Title].[Title].ALLMEMBERS 
      ,[Person].[Person].[Person].ALLMEMBERS 
     ) 
     ,[Measures].[Billable Hours] 
     ) 
     , 
     [Measures].[Billable Hours] >= 50 
    ) 
    } ON ROWS 
FROM TestCube; 

所望の結果がまだ持っているの列の2017データがない場合でも、列、および唯一のショーの時間> 50を表示することですデータ。

これに関するお手伝いがあれば幸いです。私は> 50時間をチェックする計算されたメンバーを作成することでその周りに方法を見つけました。それ以外の場合はnullを返します。これを行うためのよりよい方法があるかどうか疑問に思うだけです。

おかげで、 ヒラリー

+0

結果はどのようになりますか? – whytheq

答えて

0

あなたはフィルタ条件にOR ISEMPTY([Measures].[Billable Hours])を追加してみてください:

SELECT 
    [measures].[Hours] ON COLUMNS 
, 
    [Date].[Year].[Year].ALLMEMBERS 
    * 
    { 
     Filter 
     (
     NonEmpty 
     (
      CrossJoin 
      (
      [Client].[Client].[Client].ALLMEMBERS 
      ,[Department].[Department].[Department].ALLMEMBERS 
      ,[Title].[Title].[Title].ALLMEMBERS 
      ,[Person].[Person].[Person].ALLMEMBERS 
     ) 
     ,[Measures].[Billable Hours] 
     ) 
     , 
     [Measures].[Billable Hours] >= 50 
      OR ISEMPTY([Measures].[Billable Hours]) 
    ) 
    } ON ROWS 
FROM TestCube; 
+1

ありがとう!私はOR機能を使用することができなかったことを認識していませんでした。 – HBetts

0

あなたが計算されるメジャーにアルゴリズムを移動することができます。それはより速いです。フィルター機能が遅い。

with 
Member [Measures].[Billable Hours 50More] as 
IIF([Measures].[Billable Hours] >= 50, [Measures].[Hours], NULL)  

select 
[Measures].[Billable Hours 50More] on 0, 
[Date].[Year].[Year].AllMembers * NonEmpty([Client].[Client].[Client].AllMembers * [Department].[Department].[Department].AllMembers * [Title].[Title].[Title].AllMembers * [Person].[Person].[Person].AllMembers, [Billable Hours 50More]) on 1 

from TestCube 
+0

ありがとうございます。これは実際に私が終わったものです。とても有難い! – HBetts

関連する問題