MDX最適化プロパティ

MDXでの最適化プロパティは、Essbase式と計算されたメンバーのパフォーマンス、およびそれらに依存するMDX問合せのパフォーマンスを向上させることができます。NONEMPTYMEMBERおよびNONEMPTYTUPLEを大規模セットに使用しながら空の値をスキップする方法について説明します。

最適化プロパティは、数式を含むアウトライン・メンバーと計算されたメンバーにのみ適用できます。保存されたメンバーは、これらのプロパティに関連付けられていません。

NONEMPTYMEMBERプロパティとNONEMPTYTUPLEプロパティを使用すると、EssbaseのMDXで、#MISSINGデータのみを含む寄与しない値での数式の実行をスキップしながら、メンバーまたはタプルの大規模なセットを問い合せられます。

大規模セットは非常にスパースである傾向があり、入力メンバーに寄与し(#MISSING値がない)、返されるメンバーはごくわずかであるためです。その結果、計算されたメンバーと式でNONEMPTYMEMBERとNONEMPTYTUPLEを使用すると、メモリー・リソースが節約され、特に同時ユーザー環境でスケーラビリティが向上します。

NONEMPTYMEMBER

NONEMPTYMEMBER nonempty_member_list

ここで、nonempty_member_listは、数式または計算されたメンバーと同じディメンションからの1つ以上のカンマ区切りのメンバー名、または計算されたメンバー名です。

計算メンバーまたは数式の先頭に単一のNONEMPTYMEMBERプロパティ句を使用して、Essbaseに対し、nonempty_member_listで指定した、いずれかのメンバーが空であるときに、数式または計算メンバーの値が空であることを示します。

NONEMPTYTUPLE

NONEMPTYTUPLE (nonempty_member_list)

ここで、nonempty_member_listは、それぞれ異なるディメンションからの1つ以上のカンマ区切りのメンバー名、または計算されたメンバー名です。

数式に依存するいずれかのディメンションがnonempty_member_listから省略されている場合、すべてのディメンションが数式キャッシュに追加されるわけではないため、誤った結果が生じる可能性があります。

計算メンバーまたは数式の先頭に単一のNONEMPTYTUPLEプロパティ句を使用して、Essbaseに対し、nonempty_member_listで指定したタプルのセル値が空であるときに、数式または計算メンバーの値が空であることを示します。

次の問合せは、現在の月と過去2か月のUnits (パッケージあたりのアイテム)の合計を表すメンバー[3 Month Units]を計算します。ここで、Unitsのデータは欠落していません。

計算されたメンバー[3 Month Units]は、過去3か月に出荷されたUnitsを計算します。[MTD]で出荷されたユニット(1年で出荷されたユニット)が空の場合、そのYearのすべての月のUnitsデータは空になります。したがって、過去3か月間に出荷されたUnitsの合計も空になります。この問合せの行軸は非常に大規模でスパースであるため、この場合、NONEMPTYTUPLEプロパティを使用することで、問合せのパフォーマンスは大幅に向上します。

WITH MEMBER [Measures].[3 Month Units] AS
'
 NONEMPTYTUPLE ([Units], [MTD])
  Sum(
       {
        ClosingPeriod(Time.Generations(5), Time.CurrentMember),
        Time.CurrentMember.Lag(1),
        Time.CurrentMember.Lag(2)
        }, 
        Units
   )
'
SELECT
 {Units, [3 Month Units]} ON COLUMNS,
 NON EMPTY 
  CrossJoin(
     Stores.Levels(0).Members,
     [Store Manager].Children
  )
ON ROWS
FROM ASOSamp.Basic
WHERE (Mar);

前述の問合せでは、次の出力を返します(結果は切り捨てられます):

表4-20 MDX例からの出力グリッド

(軸) Items Per Package 3 Month Units
(017589, Carrie) 610 1808
(020408, Debra) 584 1778
(020486, Kalluri) 551 1670
(047108, Kimberley) 593 1723
(051273, Madhukar) 541 1642
(056098, Melisse) 607 1750
... ... ...