機械翻訳について

問合せの要素の理解

この項では、単純な問合せを開発するための基礎として使用するテンプレートを作成します。

ほとんどの問合せは、次の文法フレームワークに基づいて作成できます:

SELECT
  {}
ON COLUMNS
FROM Sample.Basic

行1のSELECTは、すべてのMDX文の本文を開始するキーワードです。

行2の中カッコ { } は、setのプレースホルダーです。 前述の問合せでは、セットは空ですが、中カッコはプレースホルダーのままです。

問合せテンプレートを作成するには:

  1. Sample.Basicデータベースに対して実行できるサンプル問合せを格納するフォルダを作成します。

    たとえば、「queries」というフォルダを作成します。

  2. テキスト・エディタを使用して、空のファイルに次のコードを入力します:
    SELECT
      {}
    ON COLUMNS
    FROM Sample.Basic
  3. ファイルをqry_blank.txtとして保存します。

セットおよびタプルの概要

setは、同じディメンショナリティを持つ1つ以上のtuplesの順序付きコレクションです(ディメンショナリティの詳細は、「セットの指定に関する規則」を参照してください)。

tupleは、任意の数のディメンションからメンバーまたはメンバーの組合せを参照する方法です。 たとえば、Sample.Basicデータベースでは、Janは(Jan, Sales)と同様に([Jan],[Sales],[Cola],[Utah],[Actual])タプルです。

メンバー名は次の方法で指定できます:

  • 実際の名前または別名を指定します。次に例を示します:

    • Cola

    • Actual

    • COGS

    • [100]

    メンバー名がnumberで始まるか、空白が含まれている場合は、[100]などの角カッコで囲む必要があります。 わかりやすく、コードを読みやすくするために、すべてのメンバー名に角カッコを付けることをお薦めします。

    メンバー名がアンパサンド(&)で始まる場合は、引用符で囲む必要があります(例: ["&xyz"])。 これは、先頭のアンパサンドが置換変数用に予約されているためです(「MDX問合せでの置換変数の使用」を参照)。 StrToMbr("&100")として指定することもできます。

    属性メンバーの場合は、長い名前(メンバーを一意に識別するために修飾されている)を使用する必要があります。たとえば、[12]のかわりに[Ounces_12]を使用します。

  • ディメンション名または祖先メンバー名のいずれかをメンバー名の接頭辞として指定します(例: [Product].[100-10]および[Diet].[100-10])。 この方法では、あいまいさが排除され、共有メンバーを正確に参照できるため、すべてのメンバー名にこの方法をお薦めします。

    ノート:

    メンバー名の修飾で複数の祖先を使用しないでください。 複数の祖先が含まれている場合、Essbaseはエラーを返します。 たとえば、[Market].[New York]および[East].[New York]はNew Yorkの有効な名前ですが、[Market].[East].[New York]はエラーを返します。

  • WITHセクションで定義された計算済メンバーの名前を指定します。

演習: 最初の問合せの実行

問合せテンプレートの2行目の中カッコ { } は、セットのプレースホルダーであることを思い出してください。 この演習では、問合せにセットを追加して実行します。

問合せを実行するには:

  1. qry_blank.txt (問合せの要素の理解から作成した問合せテンプレート)を開きます。
  2. セットは単一のタプルと同じくらい単純な場合があるため、Janを問合せテンプレートにセットとして追加します。 中カッコを保持します(関数コールによって生成されるセットを除くすべてのセット仕様に必要です)。

    2行目の中カッコ内にJanと入力します:

    SELECT 
      {Jan}
    ON COLUMNS
    FROM Sample.Basic
  3. 問合せをqry_first.txtとして保存します。
  4. Essbaseが実行されていることを確認します。
  5. EssbaseでMDX文を受信するには、「Essbase webインタフェース」「MaxLクライアント」または「MDXの実行」オプションを使用して、Essbaseに文を渡します(キューブの「分析」ビューで使用可能)。 この章の例では、MaxL Clientを使用します。 「Essbase webインタフェース」では、行軸と列軸の両方が存在する必要があるため、前述の例は機能しません。 ただし、ON COLUMNSおよびON ROWSを含むその他の問合せ例は実行できます(「演習: 2軸問合せの実行」を参照)。 また、「Essbase webインタフェース」を使用する場合は、MDX問合せをセミコロンで終了しないでください。

    MaxLクライアントを起動し、有効なユーザー名とパスワードを使用してログオンします。 たとえば、

    login admin1 password1 on https://hostname/essbase/agent;
  6. SELECT問合せ全体をコピーしてMaxL Shellに貼り付けますが、まだEnterを押さないでください。
  7. Enterを押す前に、基本の後の任意の場所にセミコロンを入力します。 セミコロンはMDX構文要件の一部ではありませんが、MaxL Shellでは実行準備ができている文の終わりを示すために必要です。
  8. [Enter]キーを押します。

結果は次のようになります:

Jan
  8024

セットの指定に関する規則

前述のように、セットは1つ以上のタプルの順序付きコレクションです。

たとえば、次の問合せでは、 {[100-10]} はタプルで構成されるセットです。

SELECT
  {[100-10]}
ON COLUMNS
FROM Sample.Basic

次の問合せでは、 {([100-10], [Actual])} もタプルで構成されるセットですが、この場合、タプルは単一のメンバー名ではありません。 かわりに、([100-10],[Actual])は、ProductとScenarioの2つのディメンションのメンバーで構成されるタプルを表します。

SELECT
  {([100-10], [Actual])}
ON COLUMNS
FROM Sample.Basic

セットに複数のタプルがある場合は、次のルールが適用されます: セットの各タプルで、メンバーはセットの他のタプルのメンバーと同じディメンションを表す必要があります。 また、ディメンションは同じ順序で表される必要があります。 つまり、セットの各タプルは同じdimensionalityを持つ必要があります。 例:

  • 次のセットは、同じディメンションの2つのタプルで構成されています:

    {(West, Feb), (East, Mar)}
  • FebとSalesは異なるディメンションからのものであるため、次のセットはディメンショナリティ・ルールを破棄します:

    {(West, Feb), (East, Sales)}
  • 次の設定では、2つのタプルに同じディメンションが含まれていますが、2つ目のタプルではディメンションの順序が逆になっているため、ディメンション性ルールが破棄されます:

    {(West, Feb), (Mar, East)}
  • セットは、セットのコレクションでも、空(タプルを含まない)でもかまいません。

  • セットは、セットを戻すMDX関数で表される場合を除き、中カッコ {}で囲む必要があります。

軸の仕様の概要

軸は、データベースからの問合せ結果のレイアウトを決定する仕様です。 軸はMDX問合せに次のように適合します:

SELECT <axis> [, <axis>...]
FROM <database> 

MDX問合せでは、少なくとも1つの軸を指定する必要があります。

AXIS(0)から開始してAXIS(1)...AXIS(63)で続行し、最大64個の軸を指定できます。 3つ以上の軸を使用することは一般的ではありません。 軸の順序は重要ではありませんが、軸0からnのセットを指定する場合、0からnまでの軸はスキップしないでください。 また、ディメンションを複数の軸に表示することはできません。

最初の5つの軸には、次の表に示すキーワード別名があります:

表27-1 Axesキーワード別名

軸キーワード別名

ON COLUMNS

AXIS(0)のかわりに使用できます

ON ROWS

AXIS(1)を置換できます

ON PAGES

AXIS(2)を置換できます

ON CHAPTERS

AXIS(3)を置換できます

ON SECTIONS

AXIS(4)を置換できます

たとえば、次の問合せでは、軸の指定は{Jan}ON COLUMNSです:

SELECT
  {Jan} ON COLUMNS
FROM Sample.Basic

演習: 2軸問合せの実行

2軸問合せを実行するには:

  1. qry_blank.txt (問合せの要素の理解から作成した問合せテンプレート)を開きます。
  2. ON COLUMNSの後にカンマを追加し、ON ROWSを追加して第2軸のプレースホルダーを追加します:
    SELECT
      {}
    ON COLUMNS,
      {}
    ON ROWS
    FROM Sample.Basic
  3. 新しい問合せテンプレートをqry_blank_2ax.txtとして保存します。
  4. 列軸のセット指定として、Productメンバー100-10および100-20を入力します。 次に例を示します。
    SELECT
      {[100-10],[100-20]}
    ON COLUMNS, 
      {}
    ON ROWS
    FROM Sample.Basic

    これらのメンバー名には特殊文字が含まれているため、角カッコを使用する必要があります。 ここで使用する表記規則では、すべてのメンバー名を特殊文字が含まれていない場合でも角カッコで囲むことをお薦めします。

  5. 行軸のセット指定として、Qtr4を介してQtr1の年メンバーを入力します。
    SELECT
      {[100-10],[100-20]}
    ON COLUMNS,
      {[Qtr1],[Qtr2],[Qtr3],[Qtr4]}
    ON ROWS
    FROM Sample.Basic
  6. 問合せをqry_2ax.txtとして保存します。
  7. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

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

表27-2 結果: 2軸問合せの実行

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

Qtr1

5096

1359

Qtr2

5892

1534

Qtr3

6583

1528

Qtr4

5206

1287

演習: 単一軸の複数のディメンションの問合せ

単一軸の複数のディメンションを問い合せるには:

  1. qry_blank_2ax.txt (演習: 2軸問合せの実行から作成した問合せテンプレート)を開きます。
  2. 列軸で、それぞれが単一のメンバーではなくメンバーの組合せである2つのタプルを指定します。 複数のメンバーが各タプルで表されるため、各タプルをカッコで囲みます。
    SELECT
      {([100-10],[East]), ([100-20],[East])}
    ON COLUMNS,
      {}
    ON ROWS
    FROM Sample.Basic
  3. 行軸で、4つの2メンバー・タプルを指定し、各四半期を利益でネストします:
    SELECT
      {([100-10],[East]), ([100-20],[East])}
    ON COLUMNS,
      {
      ([Qtr1],[Profit]), ([Qtr2],[Profit]),
      ([Qtr3],[Profit]), ([Qtr4],[Profit])
      }
    ON ROWS
    FROM Sample.Basic
  4. 問合せをqry_1ax.txtとして保存します。
  5. 演習: 最初の問合せの実行の説明に従って、問合せをMaxLクライアントに貼り付けて実行します。

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

表27-3 結果: 単一軸の複数のディメンションの問合せ

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

東部

東部

Qtr1

Profit

2461

212

Qtr2

Profit

2490

303

Qtr3

Profit

3298

312

Qtr4

Profit

2430

287

キューブ仕様

キューブ仕様は、問合せの対象となるデータベースを決定する問合せの一部です。 キューブ仕様はMDX問合せに次のように適合します:

SELECT <axis> [, <axis>...]
FROM <database> 

<database>セクションはFROMキーワードの後に続き、最初にアプリケーション名を指定し、次にデータベース名を指定するデリミタ付きまたは非デリミタ付きの識別子で構成する必要があります。たとえば、次のように指定します:

  • FROM Sample.Basic

  • FROM [Sample.Basic]

  • FROM [Sample].[Basic]

  • FROM'Sample'.'Basic'