Multidimensional Expressions

Un article de Wikipédia, l'encyclopédie libre.

En francais Expressions multidimensionnel, MDX est un langage de requête pour les Base de données OLAP, de même qu' SQL pour les SGBDR. C'est aussi un langage de calcul avec une syntaxe similaire à celle des tableurs .

Sommaire

[modifier] Historique

Inventé par Mosha Pasumansky au sein de Microsoft , MDX fut présenté pour la première fois en 1997 comme un volet de la spécification OLE DB for OLAP (ODBO)

La spécification fut rapidement suivie en 1998 par une version commerciale de Microsoft OLAP Services 7.0 puis par Microsoft Analysis Services. La dernière version de la spécification OLE DB for OLAP (ODBO) a été émise par Microsoft en 1999.

Bien que ce ne soit pas un standard ouvert , mais plutôt une spécification propriétaire de Microsoft, il a été adopté par un large éventail d'éditeurs OLAP. Parmi eux on retrouve autant des éditeurs de produits serveurs tel que :

  • ALG Software [acquis par Business Objects]
  • Applix
  • Descisys
  • INEA/Cartesis [acquis par Business Objects]
  • Microstrategy
  • Panoratio
  • SAS
  • SAP
  • Whitelight
  • NCR

que de produits coté terminal :

...


Depuis l'invention d'XML for Analysis qui normalise MDX comme un langage de requête, de plus en plus d'entreprises, à l'image d'Hyperion Solutions, ont commencé à utiliser MDX.

La spécification XML for Analysis se réfère à la spécification OLE DB for OLAP (ODBO) pour les détails du langage MDX. Avec Analysis Services 2005, Microsoft a introduit des extensions au langage comme les sous-requêtes. Excel 2007, entre autres, commence a utiliser ces extensions MDX.

[modifier] mdXML

En 2001 le XMLA Council a publié la norme XML for Analysis qui inclut le langage de requête mdXML. Dans la spécification actuelle XMLA, le mdXML consiste pour l'essentiel en du MDX encapsulé dans des balises XML <Statement>.

[modifier] Types de données MDX

MDX possède six types de données primaires

[modifier] Scalaires

Un scalaire est soit un nombre, soit une chaine de caractères. Il peut être définit en tant que littéral, par exemple le nombre 5 ou encore la chaine "Olap". Il peut aussi être retourné par une fonction MDX: Aggregate (Nombre), UniqueName (Chaîne ), .Value (nombre ou chaine) etc.

[modifier] Hiérarchie

Une hiérarchie est une dimensionhierarchy d'un cube.Elle peut être spécifiée par son nom unique e.g. [Temps].[Fiscal] ou retourné par une fonction MDX: .Hierarchy.

[modifier] Niveau

Un niveau est niveau dans une hiérarchie de dimensions. Il peut être définit par son nom unique , par exemple [Temps].[Fiscal].[Mois] ou retourné par une fonction MDX :.Level.

[modifier] Membre

Un membre est un membre d'une hiérarchie de dimension. Il peut être définit par son nom unique , par exemple [Temps].[Fiscal].[Mois], par son nom qualifié:[Temps].[Fiscal].[2006].[Q2].[Juillet] , ou retourné par une fonction MDX:.PrevMember, .Parent, .FirstChild


[modifier] Tuple

Un tuple est une collection ordonnée d'un ou plusieurs membre de différentes hiérarchies. Les tuples peuvent être définis énumération des membres, par exemple ([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales]) ou retournés par une fonction MDX:.Item.

[modifier] Ensemble

Un ensemble (set) est une collection ordonnée de tuples partageant les mêmes hiérarchies (dimensions). Il peut être définit par énumération des tuples , par exemple {([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])} , ou retourné par une fonction MDX:Crossjoin, Filter, Order, Descendants.

[modifier] Autres types de données

Dans certaines limites, MDX autorise aussi d'autres types de données. Les tableaux par exemple peuvent être utilisé à l'intérieur de la fonction SetToArray. Les dimensions peuvent être utilisées dans les fonctions Leaves.

Les objets d'autres types de données sont représentés à l'aide de chaines scalaires indiquant leurs noms, comme les noms de groupe de mesure dans la fonction MeasureGroupMeasures, ou les noms de KPI dans les fonctions KPIValue ou KPIGoal.

[modifier] Exemple de requête

L'exemple suivant, adapté de la documentation en ligne de SQL Server 2000 , présente une requête MDX basique utilisant l'instruction SELECT. Cette requête renvoie un jeu de résultats comprenant les montant des ventes pour 2003 et 2002 des magasins de l'état de Californie.

SELECT
   { [Measures].[Store Sales] } ON COLUMNS,
   { [Date].[2002], [Date].[2003] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )

Dans cet exemple, la requête définis les informations de résultat suivantes:

  • la clause SELECT définis que les axes de la requête sont : le montant des vente en magasin (Store Sales Amount )
  • la clause FROM indique que la source de données est le cube "Sales"
  • la clause where définis que l'axe de transition est le membre "California" de la dimension "Store"

NB: On peut spécifier jusqu'à 128 axes pour une même requête MDX.

[modifier] Livre (anglais)

  • George Spofford, Sivakumar Harinath, Chris Webb, Dylan Hai Huang, Francesco Civardi: MDX-Solutions: With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase. Wiley, 2006, ISBN 0-471-74808-0
  • Mosha Pasumansky, Mark Whitehorn, Rob Zare: Fast Track to MDX. ISBN 1-84628-174-1

[modifier] Liens externes (anglais)