MDX (問い合わせ言語)

MDX（英: MultiDimensional eXpressions）は、データベース管理システムを使用したオンライン分析処理（OLAP）の問い合わせ言語である。SQLと共通点が多い、OLAPキューブ用の問い合わせ言語である。また、スプレッドシートの数式に似た構文を持つ計算言語でもある。
背景.
MultiDimensional eXpressions（MDX）言語は、OLAPキューブに格納されている多次元データを照会および操作するための特殊な構文を提供する。
これらの一部を従来のSQLに変換することも可能だが、その場合は非常に単純なMDX文の場合でも不格好なSQL文の合成が必要になることが多い。MDXは多くのOLAPベンダーに採用されており、事実上、OLAPシステムの業界標準ともいえる。
歴史.
MDXは、1997年にMicrosoftからOLE DB for OLAP仕様の一部として初めて紹介された。これはMosha Pasumanskyを含むSQL Serverエンジニアのグループによって発明されたもの。
これに続いて1998年にMicrosoft OLAP Services 7.0が商用リリースされ、その後、Microsoft Analysis Servicesがリリースされた。OLE DB for OLAP仕様の最新バージョンは、1999年にMicrosoftから発表されている。
これはオープンな仕様ではなく、Microsoftが所有する仕様であったものの、さまざまなOLAPベンダーによって採用された。
XML for Analysis仕様ではMDX問い合わせ言語の詳細については、OLE DB for OLAP仕様を参照していた。Analysis Services 2005では、Microsoftは副問い合わせのようなMDX問い合わせ言語拡張をいくつか追加した。
Microsoft Excel 2007などの製品は、これらの新しいMDX問い合わせ言語拡張機能を使用し始めた。 MDXのこの新しいものをMDX 2005と呼ぶ人もいる。
mdXML.
2001年、XMLA評議会（英: XMLA Council）は問い合わせ言語としてmdXMLを含むXML for Analysis（XMLA）標準をリリースした。
XMLA 1.1仕様では、mdXMLは基本的にXML codice_1タグでラップされたMDXである。
MDX データ型.
MDXには主に6つのデータ型がある。
例文.
次の例は、SQL Server 2000 Books Onlineを応用したもので、SELECTステートメントを使用する基本的なMDXクエリ。このクエリは、カリフォルニア州の店舗の2002年および2003年の店舗売上を含む結果セットを返す。
SELECT
 { [Measures].[Store Sales] } ON COLUMNS,
 { [Date].[2002], [Date].[2003] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )
この例では、クエリは次の結果セット情報を定義する。
注意：MDXクエリでは、最大128のクエリの軸を指定できる。
2つの軸を作成する場合、1つは列軸で、もう1つは行軸である必要があるが、クエリ内での表示順序は関係ない。軸が1つだけのクエリを作成する場合、それは列軸でなければならない。特定のオブジェクト識別子を囲む角括弧は、識別子が予約語でなく、文字、数字、またはアンダースコア以外の文字を含まない限り、オプションである。
SELECT
 [Measures].[Store Sales] ON COLUMNS,
 [Date].Members ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )