MDX (問い合わせ言語)
MDXには主に6つのデータ型がある。
スカラー - スカラーは数値または文字列。リテラルとして指定できる。例として数値5や文字列"OLAP"のようなリテラル、あるいは Aggregate (数値)、 UniqueName (文字列)、 .Value (数値または文字列)のようなMDX関数の戻り値など。
ディメンション/階層 - OLAPキューブのディメンション。ディメンションは、キューブ内のメジャーや属性情報を構成するもの。MDXはディメンション間の依存関係を認識、想定せず、それらが相互に独立しているとみなす。ディメンションには、レベルを含むいくつかの階層または階層に編成されたいくつかのメンバー(以下を参照)が含まれ、一意の名前で指定できる。例として [Time] あるいは .Dimension のようなMDX関数の戻り値。階層はOLAPキューブのディメンション階層であり、一意の名前で指定できる。例として [Time].[Fiscal] あるいは .Hierarchy のようなMDX関数の戻り値。階層はディメンション内に含まれる。(OLEDB for OLAP MDX仕様では、ディメンションと階層のデータ型が区別されない。MicrosoftAnalysis Servicesなどの一部の実装では、それらの扱いが異なる。)
レベル - レベルはディメンション階層のレベルであり、一意の名前で指定できる。例として [Time].[Fiscal].[Month] のような一意な値、あるいは .
Level のような関数の戻り値。
メンバー - メンバーはディメンション階層のメンバーであり、一意の名前で指定できる。例として [Time].[Fiscal].[Month].[August 2006] 、 [Time].[Fiscal].[2006].[Q3].[August 2006] のような修飾名、あるいは .PrevMember, .Parent, .FirstChild のようなMDX関数の戻り値。すべてのメンバーは階層ごとに固有のものであることに注意。同一のものが2つの異なる階層([Product].[ByManufacturer] and [Product].[ByCategory])のメンバーである場合、セットとタプルで調整する必要のある2つの異なるメンバーが表示される可能性がある(以下を参照)。
タプル - タプルは、異なるディメンションの1つ以上のメンバーの順序付けられた集まりである。タプルはメンバーを列挙することで指定できる。例として ([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales]) あるいは .Item のようなMDX関数の戻り値。
セット - セットは、同じディメンション、またはMicrosoftの実装の場合は階層のタプルの順序付けられた集まりである。
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と呼ぶ人もいる。