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)」を参照してください。