いくつかの変更をお勧めします。
まず、各ディメンションのすべてのメンバーをクエリで返す必要がありますか?フィルタの条件を満たす場合に含まれます。また、場合によってはパフォーマンスを向上させるために、where句を副選択に変更することもわかりました。パフォーマンスが変化するかどうかをテストする必要があります。次に、最初にNonEmpty関数を使用して、フィルター関数内に配置することにより、フィルター処理するメンバーの数を減らすことができます。また、場合によっては、ポリモーフィック演算子(*)を使用すると、CrossJoin関数を使用したり、メンバーのタプルセットを作成したりするよりもパフォーマンスが低下します。軸にアイテムが1つしかない場合は、列の空でないことは不要です。これらの提案をすべて以下にまとめました。
with member [measures].[total] as
[Measures].[m1] + [Measures].[m2] + [Measures].[m3]
select
[measures].[total] on columns,
filter (
nonempty(
([dim1].[h1].[h1].members,
[dim1].[h2].[h2].members,
[Loss Date].[Date].[Year].members,
[Dim1].[h3].[h3].members)
, [measures].[m1]),
, [measures].[total]>100000 and [Measures].[Open File Count]>0) on rows
from
(select [1 Date - Month End].[Month End Date].[Month].&[20120331] on columns
from [Monthly Summary])
NONEMPTYとNonEmptyの説明については、http://blogs.msdn.com/b/karang/archive/2011/11/16/mdx-nonempty-vs-nonempty.aspxを参照してください。場合によっては、NonEmpty関数をFilter関数内に配置すると、パフォーマンスが低下する可能性がありますが、そうでない場合もあります。テストする必要があります。
問題は、ディメンションまたはキューブの設計(ストレージエンジンの問題)にある可能性があり、クエリ(式エンジンの問題)にはない可能性があります。http://www.microsoft.com/en-us/download/details.aspx?id=661の手法を使用して診断できます。ホワイトペーパーはSSAS2005用に作成されましたが、それ以降のバージョンのSSASにも適用されます。