機械翻訳について

Leaves

指定したメンバーの値に寄与するレベル0 (リーフ)メンバーのセットを戻します。

リーフ機能では、取得前にメンバーまたはタプルの大規模なセットを簡潔に記述しながら、そのセットを事前に展開することを回避します。 大きなセットは非常に疎になる傾向があるため、入力メンバー(#Missing以外の値を持つ)には少数のメンバーのみが関与し、戻されます。 その結果、リーフは空でない同等の子孫関数コールよりもメモリー・リソースを消費しないため、特に同時ユーザー環境でスケーラビリティが向上します。

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

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

リーフによって返されるセットは、レベル0の空でない子孫のセットですが、いくつかの違いがあります。 たとえば、memberが代替階層からのものである場合、戻りセットには、値がmember値に集計されるすべてのプライマリ、保管済、レベル0のメンバーが含まれます。 これらのコントリビュート・メンバーは次のいずれかになります:

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

  • 共有メンバーを使用してmemberの直接の子孫に値を提供するメンバー

ほとんどの場合、Leaves関数は取得前にセットを事前に展開しません。 したがって、Descendants関数よりも必要なメモリー・リソースが少なくなり、特に同時実行性の高いユーザー環境で大規模なセットを処理する際のスケーラビリティが向上します。 ラージ・セットは非常に疎になる傾向があるため、MDXの現在のメンバー・スタックで定義されているように、現在の視点ではほとんどメンバーが返されません。

たとえば、ヘルスケア・プロバイダには、DoctorおよびGeographyディメンションを含むデータベースがある場合があります。 何百万もの医師が存在する可能性がありますが、特定の地理的ロケーションにデータが関連付けられているのは分数のみです。 リーフは、セットが大きいが、特定の視点で疎な問合せに最適です:

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

リーフ機能は、大規模なディメンションに対する問合せに役立ちます。

場合によっては、リーフはセットの事前拡張を必要とせず、メモリーの節約を制限します。 リーフへの入力メンバーが次の場合、セットの事前拡張が発生する可能性があります:

  • 勘定科目ディメンション

  • 時間ディメンション

  • メンバー数が10,000未満のディメンション

構文

Leaves ( member )

パラメータ

member

コントリビュート・リーフ・メンバーが検索されるメンバー

ノート

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

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

  • Head、Tail、Subsetなどのメタデータ関数を使用してリーフの戻りセットを変更した場合、問合せは最適化されません。 たとえば、リーフ・セットの半分を問い合せると、空でない子孫関数コールの場合とほぼ同じパフォーマンスが低下します。

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

次の例は、Asosamp.Sampleデータベースに基づいています。

例1 (リーフ)

次の問合せは、Unitsデータが#MISSINGでないすべてのレベル0 Personal Electronics製品のUnits (パッケージ当たりのアイテム数)を返します:

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

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

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

これらの問合せは、次のグリッドを返します:

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

(軸) パッケージ当たりのアイテム数
デジタル・カメラ 3041
ビデオ・カメラ 3830
フォト・プリンタ 6002
メモリー 23599
その他のアクセサリ 117230
Boomboxes 10380
Radios 20009

[Handhelds]はメジャーUnitsの値が#MISSINGであるため、結果セットから省略されました。

例2 (リーフ)

この例では、[Small Items]という3つ目の階層がProductsディメンションに追加されました。


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

次の問合せ

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

次のグリッドを返します:

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

(軸) パッケージ当たりのアイテム数
デジタル・カメラ 3041
ビデオ・カメラ 3830
メモリー 23599
その他のアクセサリ 117230

level-0メンバーが[Handhelds/PDAs]を介して[Small Items]に寄与したため、プライマリ・メンバー[Digital Cameras]および[Camcorders]に加えて、プライマリ・メンバー[Memory]および[Other Accessories]も返されます。