Expresiones multidimensionales
Las expresiones multidimensionales o MDX (acrónimo de MultiDimensional eXpressions) son un lenguaje de consulta para bases de datos multidimensionales sobre cubos OLAP. Se utilizan en inteligencia empresarial para generar informes para la toma de decisiones basadas en datos históricos, con la posibilidad de cambiar la estructura o rotación del cubo.
Introducción
Una consulta MDX es muy similar a una consulta SQL: nos devuelve un conjunto de celdas, que es resultado de tomar un subconjunto de las celdas del cubo original. Sin embargo, contiene diferentes funciones, y al utilizar varias dimensiones puede volverse bastante compleja.
MDX utiliza las jerarquías en varias situaciones. Por ejemplo, si una dimensión se denomina región, esta puede contener países. Los países a su vez contienen provincias y las provincias ciudades. Para manejar estos componentes MDX tiene funciones como children (hijos en inglés), cousin (primos) y parents (padres). En el ejemplo anterior, para la dimensión país, la región sería el padre, y las provincias los hijos.
Un cliente OLAP puede manipular el cubo de distintas formas: rotarlo, rebanarlo y cortarlo en dados.
Existen distintos proveedores de datos OLAP. Por ejemplo, el de Microsoft es Analysis Services, y el de Oracle, Business Intelligence Enterprise Edition.
Ejemplo
Consulta MDX Básica:
Sintaxis: SELECT <especificación de eje> on columns, <especificación de eje> on rows FROM <especificación de cubo> WHERE <especificación Slicer (rebanador)>
SELECT
{ [Measures].[Store Sales] } ON COLUMNS,
{ [Date].[2012], [Date].[2013] } ON ROWS
FROM Sales
WHERE ( [Store].[Spain].[CA] )
CREATE CUBE Sales
(
DIMENSION Time TYPE TIME,
HIERARCHY [Fiscal],
LEVEL [Fiscal Year] TYPE YEAR,
LEVEL [Fiscal Qtr] TYPE QUARTER,
LEVEL [Fiscal Month] TYPE MONTH OPTIONS (SORTBYKEY, UNIQUE_KEY),
HIERARCHY [Calendar],
LEVEL [Calendar Year] TYPE YEAR,
LEVEL [Calendar Month] TYPE MONTH,
DIMENSION Products,
LEVEL [All Products] TYPE ALL,
LEVEL Category,
LEVEL [Sub Category],
LEVEL [Product Name],
DIMENSION Geography,
LEVEL [Whole World] TYPE ALL,
LEVEL Region,
LEVEL Country,
LEVEL City,
MEASURE [Sales]
FUNCTION SUM
FORMAT 'Currency',
MEASURE [Units Sold]
FUNCTION SUM
TYPE DBTYPE_UI4
)
Medidas de un cubo: son los datos existentes en cada celda del cubo.
Dimensiones: son los ejes del cubo.