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 句。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 ステートメントにクエリ軸を 0、1、2 または 128 個まで指定できます。クエリの行と列で動作に大きな違いがある SQL とは異なり、各軸はまったく同じように動作します。
MDX クエリで使用するデータ ソースは、SQL クエリと同様に、FROM 句によって指定します。ただし、MDX の FROM 句では 1 つのキューブしか指定できません。他のキューブの情報は、LookupCube 関数を使用して値ごとに取得できます。
MDX クエリの WHERE 句では、スライサー軸を指定します。これは、クエリにおける見えない追加の軸のように機能し、結果セットのセルに表示される値をスライスします。この点は、クエリの行軸での表示内容に直接影響しない SQL の WHERE 句とは異なります。SQL の WHERE 句の機能は、FILTER 関数などの他の MDX 関数を通じて使用できます。
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] )
詳細な例については、「クエリ軸の内容の指定 (MDX)」および「スライサー軸の内容の指定 (MDX)」を参照してください。