1

(ほとんどの場合と同様に)複数の階層を持つ日付ディメンションがあります。次の例に示すように、現在の合計として計算されるメジャーがいくつかあります。

AGGREGATE([Date].[Calendar].[Date].Members.Item(0):ClosingPeriod([Date].[Calendar].[Date], [Date].[Calendar].CurrentMember), [Measures].[Number Of Contracts])

私の問題は、現在の合計がカレンダー階層(年、月、日ごとにすべてを分類する)でのみ機能することです。代わりに、週の階層(個々の週ごとに分類)を使用すると、計算は機能せず、毎週同じ数値が表示されます。

MDXには、複数の階層の現在の合計を機能させるためのパフォーマンスの高い方法がありますか?私がこれまでに試みたすべてはかなり遅いです。

4

1 に答える 1

2

考えられる解決策の 1 つを以下に示します。EXISTING キーワードを使用すると、現在のコンテキストに存在するすべての Date メンバーのリストを取得し、それらの日付を使用してデータを集計する範囲を定義できます。私の最初のテストに基づいて、パフォーマンスは質問の計算に似ています。

AGGREGATE(NULL:TAIL(EXISTING [Date].[Date].[Date].Members).Item(0), [Measures].[Number Of Contracts])

別の、おそらくよりパフォーマンスの高いソリューションがhttp://www.purplefrogsystems.com/blog/2010/08/mdx-calculated-member-spanning-multiple-date-dimensions/で説明されています。適用可能なすべての階層の範囲を計算し、それらの階層を相互結合することで問題を解決します。

AGGREGATE({ NULL:[Date].[Calendar].CurrentMember } * { NULL:[Date].[Week].CurrentMember })

このソリューションの唯一の欠点は、相互に属性関係を持たない階層が多数ある場合、冗長になる可能性があることです。

于 2012-09-19T13:30:07.470 に答える