機械翻訳について

関数を使用したセットの作成

set member-by-memberまたはtuple-by-tupleを作成する代わりに、セットを返す関数を使用できます。 MDXには、セットを戻す関数と、他の値を戻す関数がいくつか含まれています。 Oracle EssbaseでサポートされているMDX関数の完全なリファレンスは、MDXを参照してください。

演習: MemberRange関数の使用

MemberRange MDX関数は、同じ世代の指定された2つのメンバーを含むメンバーの範囲を返します。 構文は次のとおりです:

MemberRange (member1, member2, [,layertype])

ここで、最初に指定する引数は範囲を開始するメンバーで、2番目の引数は範囲を終了するメンバーです。 layertype引数はオプションです。

ノート:

MemberRangeの代替構文では、関数名を使用するかわりに、2つのメンバー間にコロンを使用 : member1 : member2

MemberRange関数を使用するには:

  1. qry_blank.txt (問合せの要素の理解から作成した問合せテンプレート)を開きます。
  2. 中カッコ{}を削除します。これは、関数を使用してセットを返すときには不要です。
  3. コロン演算子を使用して、Qtr1からQtr4のメンバー範囲を選択します:
    SELECT 
      [Qtr1]:[Qtr4]
    ON COLUMNS 
    FROM Sample.Basic
  4. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

    Qtr1、Qtr2、Qtr3およびQtr4が返されます。

  5. MemberRange関数を使用して、Qtr1からQtr4までの同じメンバー範囲を選択します。
    SELECT
      MemberRange([Qtr1],[Qtr4])
    ON COLUMNS
    FROM Sample.Basic
  6. 問合せをgry_member_range_func.txtとして保存します。
  7. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

    Qtr1、Qtr2、Qtr3およびQtr4が返されます。

演習: CrossJoin関数の使用

CrossJoin関数は、異なるディメンションの2つのセットのクロス積を返します。 構文は次のとおりです:

CrossJoin(set,set)

CrossJoin関数は、異なるディメンションの複数のセットを入力として取り、これらの入力セットのクロス積であるセットを作成します。これは、対称レポートの作成に役立ちます。

CrossJoin関数を使用するには:

  1. qry_blank_2ax.txt (演習: 2軸問合せの実行から作成した問合せテンプレート)を開きます。
  2. 列軸の中カッコ{}CrossJoin()に置き換えます。
    SELECT
      CrossJoin () 
    ON COLUMNS, 
      {}
    ON ROWS
    FROM Sample.Basic
  3. CrossJoin関数に指定する2つのset引数のプレースホルダーとして、カッコのペアをカンマで区切って追加します:
    SELECT
      CrossJoin ({}, {})
    ON COLUMNS,
      {}
    ON ROWS
    FROM Sample.Basic
  4. 最初のセットでは、製品メンバー[100-10]を指定します。 もう一方のセットでは、Marketメンバー[East], [West], [South]および[Central]を指定します。
    SELECT
      CrossJoin ({[100-10]}, {[East],[West],[South],[Central]})
    ON COLUMNS,
      {}
    ON ROWS
    FROM Sample.Basic
  5. 行軸で、CrossJoinを使用して、メジャー・メンバーのセットをQtr1を含むセットと交差させます:
    SELECT
      CrossJoin ({[100-10]}, {[East],[West],[South],[Central]})
    ON COLUMNS,
      CrossJoin ( 
        {[Sales],[COGS],[Margin %],[Profit %]}, {[Qtr1]} 
      ) 
    ON ROWS
    FROM Sample.Basic
  6. 問合せをqry_crossjoin_func.txtとして保存します。
  7. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

CrossJoinを使用する場合、引数の順序は出力内のタプルの順序に影響します。

ノート:

入力セットがベース・ディメンションおよびその属性ディメンションの場合は、CrossJoinAttributeの使用を検討してください。

問合せの結果を次に示します:

表27-4 結果: CrossJoin関数の使用

スペースのイメージは空のスレッド・セルに使用されます スペースのイメージは空のスレッド・セルに使用されます 100-10 100-10 100-10 100-10
スペースのイメージは空のスレッド・セルに使用されます スペースのイメージは空のスレッド・セルに使用されます

東部

West

南部

中部

売上高

Qtr1

5731

3493

2296

3425

COGS

Qtr1

1783

1428

1010

1460

マージン%

Qtr1

66.803

59.118

56.01

57.372

利益%

Qtr1

45.82

29.974

32.448

24.613

演習: Children関数の使用

Children関数は、指定されたメンバーのすべての子メンバーのセットを戻します。 次の構文を使用します:

Children (member)

ノート:

Childrenの代替構文では、次のように入力メンバーの演算子として使用: member.Children この演習では、演算子構文を使用します。

Children関数を使用して最初の軸指定にショートカットを導入するには:

  1. qry_crossjoin_func.txt (演習: CrossJoin関数の使用で作成した問合せ)を開きます。
  2. 列軸の指定の2番目のセットで、[East],[West],[South],[Central][Market].Childrenに置き換えます。
    SELECT 
      CrossJoin ({[100-10]}, {[Market].Children})
    ON COLUMNS,
      CrossJoin (
        {[Sales],[COGS],[Margin %],[Profit %]}, {[Qtr1]}
      )
    ON ROWS
    FROM Sample.Basic
  3. 問合せをgry_children_func.txtとして保存します。
  4. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

Crossjoinの演習で返されたものと同じ結果が表示されます。