2017-07-27 13 views
0

「条件付き予測コスト」は、「コスト」と「予測」という指標に基づいたSCOPEステートメントコスト"。MDXを最適化する方法選択した半年に基づいて2つのメジャーを選択する方法(SCOPE、子孫ステートメントを含む)

これらのステートメントは正常に機能しますが、遅すぎます。特に報告書(またはそれ以上の年)でYEAR全体が選択された場合。待ち時間は5分以上にすることができます。 このMDXを最適化する方法はありますか?

SCOPE ([Measures].[Conditional Forecast Cost]);   
THIS = (IIF([DIM Date].[Half Year].&[1],[Measures].[Cost], [Measures].[Forecast Cost])); 
END SCOPE; 

SCOPE ([DIM Date].[Iso Month].[All].children, [Measures].[Forecast Costs]);   
    THIS =  SUM(
        Descendants(
           [DIM Date].[Iso Month].CurrentMember, 
           [DIM Date].[Iso Month] 
          ), 
        [Measures].[Conditional Forecast Cost] 
        ); 
END SCOPE; 

背景情報:

最初の文は、基本的なロジックを表します。

  • 最初の半年が選択されている場合は、「コスト」を測定すると が適用されます。
  • 下期については、「予測コスト」を測定すると、 が適用されます。

私たちが毎月のレベルで報告している限り、それはうまくいきます。エンジンは、我々は「IIF([DIM日付]。[半年]で にそれを定義した方法をaggrateないので、全体の年の最初のステートメントを集約する必要がある場合

  • は十分ではありません です。& [1 ]、[対策]。[コスト] ...」。

だから、子孫機能を有する第二SCOPEステートメントは、下の月次レベルから集計を行うためにエンジンを強制します。 これまでに動作していることが、それはあります本当に遅い。

追加情報:

  • 今はETLでMDXないとsemnaticレイヤ でこのロジックを実装することを好むため。
  • "コスト"メジャーは、MDXで計算されたメジャーです。
  • DIM日付ディメンションには、「YEAR-Month」( もちろんいくつかの追加の属性)の階層があります。

答えて

1
  1. 対策の[MDX-Script]を表示してください。
  2. あなたのIIFは、2つの sub-cubes => SCOPEジョブを記述しています。そのようなフォームに変換(簡体字):

    MEASURES.[Conditional Forecast Cost] = [Measures].[Forecast Cost] 
    SCOPE([DIM Date].[Half Year].&[1]) 
        MEASURES.[Conditional Forecast Cost] = [Measures].[Cost]; 
    END SCOPE; 
    
  3. あなたは再帰を持っている(非常に悪い!):[条件付き予測コスト]が呼び出す[予測コスト]→[予測コスト]、[条件付き予測のコスト]を呼び出します!あなたは再帰なしでそれを書き直さなければなりません!
  4. yabele.blogspot.com


www.xing.com/profile/Yuri_Abele

+0

どうもありがとうございました。 MEASURESのMDXスクリプト。[コスト]は次のとおりです。スコープ(IIF(ISERROR([Measures]。[Cost])、{}、{[Measures]。[Cost]})); THIS = [指標]。[コスト0] + [指標]。[ブランドコスト]。 END SCOPE; ' –

関連する問題