MDX の基本的なクエリ (MDX)
多次元式 (MDX) の基本的なクエリは SELECT ステートメントであり、これは MDX で最も頻繁に使用するクエリでもあります。MDX の SELECT ステートメントで結果セットを指定する方法や、SELECT ステートメントの構文と、SELECT ステートメントによる簡単なクエリ作成を学習すれば、MDX を使用して多次元データに対するクエリを実行する方法を理解できます。
結果セットの指定
MDX の SELECT ステートメントでは、キューブから返された多次元データのサブセットを格納した結果セットが指定されます。結果セットを指定するには、MDX クエリに次の情報を含める必要があります。
- 軸または階層セットの数。MDX クエリでは、軸を 128 個まで指定できます。
- MDX クエリの各軸に含める各ディメンションのメンバ。
- MDX クエリのコンテキストを設定するキューブの名前。
- クエリ軸のメンバに対してデータをスライスするスライサ軸のメンバ。スライサ軸とクエリ軸の詳細については、「クエリ軸とスライサ軸によるクエリの制限 (MDX)」を参照してください。
MDX の SELECT ステートメントでは、クエリ軸、クエリのコンテキストを設定するキューブ、スライサ軸をそれぞれ指定するために以下の句を使用します。
- SELECT 句。MDX の SELECT ステートメントのクエリ軸を指定します。SELECT 句でクエリ軸を作成する方法の詳細については、「クエリ軸の内容の指定 (MDX)」を参照してください。
- FROM 句。MDX の SELECT ステートメントの結果セットを作成するためのデータを抽出するときに使用する多次元データ ソースを指定します。FROM 句の詳細については、「SELECT ステートメント (MDX)」を参照してください。
- 省略可能な WHERE 句。スライサ軸として使用するディメンションまたはメンバを指定します。この句によって、データの抽出を特定のディメンションまたはメンバに限定します。WHERE 句でスライサ軸を作成する方法の詳細については、「スライサ軸の内容の指定 (MDX)」を参照してください。
メモ : |
---|
SELECT ステートメントの各種の句の詳細については、「SELECT ステートメント (MDX)」を参照してください。 |
SELECT ステートメントの構文
SELECT 句、FROM 句、WHERE 句を使用した基本的な SELECT ステートメントの構文を以下に示します。
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]
SELECT [ * | ( <SELECT query axis clause>
[ , <SELECT query axis clause> ... ] ) ]
FROM <SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
MDX の SELECT ステートメントでは、WITH キーワードを使用する構文、軸またはスライサ軸に含めるメンバを計算によって作成するための MDX 関数を使用する構文、クエリの一部として特定のセル プロパティの値を返すための構文など、省略可能な構文をいくつかサポートしています。MDX の SELECT ステートメントの詳細については、「SELECT ステートメント (MDX)」を参照してください。
MDX の SELECT ステートメントと SQL の構文の比較
MDX の SELECT ステートメントの構文形式は、SQL の構文とよく似ています。ただし、はっきりとした違いもいくつかあります。
- MDX 構文では、組またはメンバを中かっこ ({ }) で囲んでセットと区別します。メンバ、組、セットの構文の詳細については、「メンバ、組、およびセットの操作 (MDX)」を参照してください。
- MDX クエリでは、SELECT ステートメントにクエリ軸を 128 個まで指定できます。ただし、別名を付けられるのは、最初の 5 つの軸だけです。軸を参照するには、MDX クエリ内でのその軸の位置を示す序数を指定するか、その軸に別名がある場合はその別名を指定できます。MDX クエリで使用するデータ ソースは、SQL クエリと同様に、FROM 句によって指定します。ただし、MDX の FROM 句では 1 つのキューブしか指定できません。他のキューブの情報は、LookupCube 関数を使用して値ごとに取得できます。
- WHERE 句では、スライサ軸を指定します。WHERE 句の一部として階層が指定されていない場合、Microsoft SQL Server 2005 Analysis Services (SSAS) は、クエリ軸に明示的に組み込まれていない階層がスライサ軸に暗黙的に組み込まれていると想定し、その階層の既定のメンバに基づいてその階層にフィルタを適用します。WHERE 句を使用すれば、指定した階層のフィルタ処理を変更できるので、含めるデータを細かく制御できます。
SELECT ステートメントの例
SELECT ステートメントを使用した基本的な MDX クエリの例を以下に示します。このクエリは、Southwest という販売地域の 2002 年と 2003 年の売上と税額を格納した結果セットを返します。
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON COLUMNS,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
このクエリでは、結果セットの情報を次のように定義しています。
- SELECT 句によって、Measures ディメンションの Sales Amount メンバと Tax Amount メンバ、Date ディメンションの 2002 メンバと 2003 メンバをクエリ軸に設定しています。
- FROM 句によって、Adventure Works キューブをデータ ソースに指定しています。
- WHERE 句によって、Sales Territory ディメンションの Southwest メンバをスライサ軸として定義しています。
このクエリでは、軸の別名として COLUMNS と ROWS を使用しています。別名の代わりに、これらの軸の位置を示す序数を使用することも可能です。それぞれの軸の位置を示す序数を使用して MDX クエリを記述する例を以下に示します。
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON 0,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON 1
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
重要 : |
---|
通常、セットは大きなキューブ コンテキスト内で評価されます。ただし、EXISTING キーワード (MDX) を指定すると、強制的に現在のコンテキストでセットの評価が行われます。 |