Leaves

EssbaseのMDX Leaves関数は、指定されたメンバーの値に寄与するレベル0 (リーフ)のメンバーのセットを返します。

Leaves関数は、取得前のセットの事前拡張を回避しながら、メンバーまたはタプルの大規模セットをコンパクトに記述します。大規模セットは非常にスパースである傾向があり、入力メンバーに寄与し(#Missing値がない)、返されるメンバーはごくわずかであるためです。その結果、Leavesは、特に同時ユーザー環境で、同等の空でないDescendants関数呼び出しよりも、消費するメモリー・リソースが少なく、スケーラビリティが向上します。

#MISSING値を持つメンバーは、返されるセットに含まれません。

memberがプライマリ階層にある場合、返されるセットは、空でないレベル0の子孫のセットです。

Leavesによって返されるセットは、レベル0の空でない子孫のセットであり、いくつかの違いがあります。たとえば、memberが代替階層からのものである場合、返されるセットには、値がmemberの値に集約されるすべてのプライマリの格納されたレベル0メンバーが含まれます。これらの寄与するメンバーは次のいずれかです。

  • 代替階層に沿ったmemberの直接の子孫

  • 共有メンバーの手段でmemberの直接の子孫に値を寄与するメンバー

ほとんどの場合、Leaves関数は、取得前にセットを事前拡張しません。そのため、特に高同時ユーザー環境で、Descendants関数よりも消費するメモリー・リソースが少なく、大規模セットを扱う際のスケーラビリティが向上します。大規模セットは非常にスパースである傾向があり、そのため、MDXの現在のメンバー・スタックによって定義されるように、現在の観点で返されるメンバーはごくわずかです。

たとえば、医療提供者が、医師と地理のディメンションを含むデータベースを持っているとします。数十万の医師がいる可能性がありますが、特定の地理的場所の医師に関連付けられているデータを持っているのはごく一部です。Leavesは、セットが大規模であり、特定の観点からはスパースである問合せに最適です。

Select {[Copayments]} ON COLUMNS
CrossJoin(Leaves ([Doctors]), Leaves([Santa Clara County]) ON ROWS

Leaves関数は、大規模ディメンションでの問合せに役立ちます。

場合によっては、Leavesはセットの事前拡張を必要とし、メモリーの節約は限定的です。Leavesへの入力メンバーが勘定科目ディメンション、時間ディメンション、またはメンバーが10,000件未満のディメンションにある場合、セットの事前拡張が発生する可能性があります。

構文

Leaves ( member )

パラメータ

member

リーフ・メンバーのコントリビュータ・メンバーの検索対象のメンバー

ノート

  • この関数は、集約ストレージ・データベースにのみ適用できます。Leaves()に非集約ストレージ入力メンバーを使用すると、エラーが返されます。

  • Leaves()は、保存された階層のメンバーに対してのみサポートされます。Leavesに動的階層内のメンバーを使用すると、エラーが返されます。

  • Head、Tail、Subsetなどのメタデータ関数を使用してLeavesの戻りセットを変更すると、問合せは最適化されません。たとえば、Leavesセットの半分を問い合せると、パフォーマンスは、空でないDescendants関数呼び出しの場合とほぼ同程度に低下します。

  • Leaves()は、大規模なスパース・ディメンションでの使用をお薦めします。一般に、入力セットに10,000個以上のメンバーが含まれている場合は、Leaves()を使用してパフォーマンスを最適化します。小さい密な入力セットの場合、CrossJoinを使用して軸にNON EMPTYキーワードを使用すると、パフォーマンスが向上する可能性があります。

次の例は、ASOSamp.Basicキューブに基づいています。

例1 (Leaves)

次の問合せは、ユニットデータが#MISSINGではないすべてのレベル0パーソナル・エレクトロニクス製品のユニット(パッケージあたりのアイテム)を返します。

SELECT
{Units} ON COLUMNS,
Leaves([Personal Electronics]) ON ROWS
FROM [ASOSamp.Basic]

Leavesは空ではないレベル0の子孫を返すため、前述の問合せは次の問合せと同じです。

SELECT
{Units} ON COLUMNS,
NON EMPTY Descendants([Personal Electronics], [Products].Levels(0), SELF) ON ROWS
FROM [ASOSamp.Basic]

前述の問合せは、次のグリッドを返します:

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

(軸) 単位
Digital Cameras 3041
Camcorders 3830
Photo Printers 6002
Memory 23599
Other Accessories 117230
Boomboxes 10380
Radios 20009

[Handhelds]は、測定単位の値が#MISSINGであるため、結果セットから省略されています。

例2 (Leaves)

この例のために、[Small Items]という3番目の階層がProductsディメンションに追加されています。


Productsディメンションにメンバー[Small Items]が追加されたアウトラインの抜粋。[Small Items]には、[Digital Cameras]、[Camcorders]、[Handhelds/PDAs]の子があります。

次の問合せ:

SELECT
{Units} ON COLUMNS,
Leaves ([Small Items]) ON ROWS
FROM [ASOSamp.Basic]

返されるグリッド:

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

(軸) 単位
Digital Cameras 3041
Camcorders 3830
Memory 23599
Other Accessories 117230

Leavesは、プライマリ・メンバーである[Digital Cameras]と[Camcorders]に加えて、プライマリ・メンバーである[Memory]と[Other Accessories]も返しました。これらのレベル0メンバーは、[Handhelds/PDAs]を介して[Small Items]に貢献したためです。