0

メンバーを計算し、指定された日付範囲のメンバーを選択する次の MDX クエリがあります。

WITH
MEMBER [Measures].[Prior] as ([Date Post Transaction].[Calendar Month Period].CurrentMember.Lag(12),[Measures].[Unique Patients]) 
MEMBER [Measures].[Current] as [Measures].[Unique Patients] 
SELECT {[Measures].[Current],[Measures].[Prior]} 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize(AddCalculatedMembers({DrilldownLevel({[Date Post Transaction].[Calendar Month Period].Children})})) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME ON ROWS FROM (SELECT ({[Date Post Transaction].[Calendar Month Period].&[201207],[Date Post Transaction].[Calendar Month Period].&[201208],[Date Post Transaction].[Calendar Month Period].&[201209],[Date Post Transaction].[Calendar Month Period].&[201210],[Date Post Transaction].[Calendar Month Period].&[201211],[Date Post Transaction].[Calendar Month Period].&[201212],[Date Post Transaction].[Calendar Month Period].&[201301],[Date Post Transaction].[Calendar Month Period].&[201302],[Date Post Transaction].[Calendar Month Period].&[201303],[Date Post Transaction].[Calendar Month Period].&[201304],[Date Post Transaction].[Calendar Month Period].&[201305],[Date Post Transaction].[Calendar Month Period].&[201306]}) 
ON COLUMNS FROM [cube]) 
WHERE ([Provider Billing].[Specialty Mgma Pcps].&[Cardiology: Inv-Intvl])

基本的に、このクエリは、現在の日付範囲と前の日付範囲の循環器内のすべての患者を月ごとに求めています。

このクエリの実行には 8 ~ 9 秒かかりますが、これは異常です。Analysis Services を使用してクエリ時間を実行およびテストしていますが、MDX の最適化に役立つ他のツールを使用したことはありません。私の最初の質問は、MDX の最適化に役立つツールを知っている人はいますか?

私の主な質問は、結果をより速く処理するために、クエリでどのメソッドまたは構造を使用する必要があるかということです。私はもともと .lag() 関数を使用しておらず、代わりに現在と前の月を含むクエリを実行していました。この切り替えにより、結果時間が改善されました。

この同じ形式を使用するレポートがいくつかありますが、指標 (MEASURES) が異なるだけなので、それぞれ 5 秒以上実行されるクエリで得られる読み込み時間が想像できます。

4

1 に答える 1

1

一般に、MDX の最適化は簡単ではありません。パフォーマンスに影響を与える原因についての情報は多くなく、SQL 計画などの情報もほとんどなく、その内容も十分に文書化されていません。しかし、そこには何がありますか:

あなたのクエリを見ると、パフォーマンス キラーがどこにあるのかわかりません。おそらく、クエリ自体には表示されない計算スクリプトの何かです。私が最初に試すことは、[Date Post Transaction].[Calendar Month Period]階層の構造に応じて、次のようなものを使用することです

[Date Post Transaction].[Calendar Month Period].&[201207] : [Date Post Transaction].[Calendar Month Period].&[201306]

行軸の場合、副選択を完全に省略します。つまり、単に使用します

 FROM [cube]

副選択なしの FROM 句全体として。しかし、これが実行時間を劇的に短縮するとは思えません。

于 2013-09-25T18:23:18.203 に答える