問合せの要素の理解
この項では、単純な問合せを開発するための基礎として使用するテンプレートを作成します。
ほとんどの問合せは、次の文法フレームワークに基づいて作成できます:
SELECT
{}
ON COLUMNS
FROM Sample.Basic
行1のSELECTは、すべてのMDX文の本文を開始するキーワードです。
行2の中カッコ { } は、setのプレースホルダーです。 前述の問合せでは、セットは空ですが、中カッコはプレースホルダーのままです。
問合せテンプレートを作成するには:
セットおよびタプルの概要
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セクションで定義された計算済メンバーの名前を指定します。
セットの指定に関する規則
前述のように、セットは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
キューブ仕様
キューブ仕様は、問合せの対象となるデータベースを決定する問合せの一部です。 キューブ仕様はMDX問合せに次のように適合します:
SELECT <axis> [, <axis>...]
FROM <database>
<database>セクションはFROMキーワードの後に続き、最初にアプリケーション名を指定し、次にデータベース名を指定するデリミタ付きまたは非デリミタ付きの識別子で構成する必要があります。たとえば、次のように指定します:
-
FROM Sample.Basic
-
FROM [Sample.Basic]
-
FROM [Sample].[Basic]
-
FROM'Sample'.'Basic'