2012-05-09 22 views
2

純粋なMDXで簡単に書き込めない複雑な計算を行うために.NETのストアドプロシージャを作成しています。最初の問題は、私の計算に渡すために、一連のデータを表形式で取り出す方法です。Analysis Servicesストアドプロシージャのパフォーマンス

これまでのコードは以下のとおりです。私は、ポジション** で値を取得した後、私たちはすべてのデータをメモリに入れて相互作用すると思っていたでしょう。しかし、ポジション* * 2では、クエリサブキューブがストレージエンジンに対して、私たちの範囲内の毎日ごとに発行されるようです。これはパフォーマンスにとって壊滅的なことです。

私が間違っていることはありますか?一度にセットを評価するために私が呼​​び出せるもう一つの方法はありますか?

// First get the date range that we'd like to calculate over. 
// (These values are constant here for example only) 
DateTime date = new DateTime(2012, 4, 1); 
int dateFrom = KeyFromDate(date.AddDays(-360)); 
int dateTo = KeyFromDate(date); 

string dateRange = string.Format(
    "[Date].[Date].&[{0}]:[Date].[Date].&[{1}]", 
    dateFrom, 
    dateTo 
); 

Expression expression = new Expression(dateRange + "*[Measures].[My Measure]"); 
MDXValue value = expression.CalculateMdxObject(null); // ***1 

foreach (var tuple in value.ToSet().Tuples) 
{ 
    MDXValue tupleValue = MDXValue.FromTuple(tuple).ToInt32(); // ***2 
} 
+0

どのようにデータを取得するためにキューブに接続していますか? ADOMDを使用していますか?もしそうなら、ExecuteCellSet、ExecuteXmlReader、またはsomethignelseを使用していますか? – Rick

+0

私はAnalysis Servicesに格納されたprocとExpressionクラスをMicrosoft.AnalysisServices.AdomdServer名前空間に作成しています(http://msdn.microsoft.com/en-us/library/microsoft.analysisservices.adomdserver.expression)。 calculatemdxobject%28v = sql.105%29.aspx)がキューブに接続します。 Adomdはクライアントアプリで使用するため、適用されません。 – Brett

答えて

0

実行SQLプロファイラ、分析サービスに接続、タブ上の「イベントの選択」「すべてのイベントを表示する」にチェックし、「aggredationsからデータを取得する」を選択し、「キャッシュからデータを取得」、「クエリsubsube」と "クエリサブキューブの冗長性 "。

最初にこのドキュメント「http://www.microsoft.com/en-us/download/details.aspx?id=17303 - 18ページ」を読んで、「query subcube verbose」がどのように機能しているかを理解してください。

デバッグモードでVisual Studio(プロシージャをデバッグしているところ)で、** 1 行を渡し、SQLプロファイラで冗長でクエリされたものを確認します。

次に、*** 2を通過して、SQLプロファイラで照会された詳細なイベントを再度確認します。

私は属性のセットが異なると考えているので、** 1ではいくつかの集約が使用され、タプルに "value"が存在する場合は* * 2であるこの集合の属性を集約するため、「集計から読み込む」の代わりに「メジャーグループキャッシュから読み取る」を複数回行うのではなく、

私はキューブを持っていないので、もっと正確にはわかりません。 "query subcube verbose"イベントでこれを見つけ出し、BIDS Helperを使用して手動で(特定の属性セットを使用して)必要な集計を作成しようとすると、役立つかもしれません。

関連する問題