Expresiones multidimensionales (MDX) es un lenguaje de consulta para procesamiento analítico en línea (OLAP) que utiliza un sistema de gestión de bases de datos . Al igual que SQL , es un lenguaje de consulta para cubos OLAP . [1] También es un lenguaje de cálculo, con una sintaxis similar a las fórmulas de las hojas de cálculo.
Fondo
El lenguaje MultiDimensional eXpressions (MDX) proporciona una sintaxis especializada para consultar y manipular los datos multidimensionales almacenados en cubos OLAP . [1] Si bien es posible traducir algunos de estos en SQL tradicional, con frecuencia requeriría la síntesis de expresiones SQL torpes incluso para expresiones MDX muy simples. MDX ha sido adoptado por una amplia mayoría de proveedores OLAP y se ha convertido en el estándar para los sistemas OLAP.
Historia
MDX se introdujo por primera vez como parte de la especificación OLE DB para OLAP en 1997 de Microsoft . Fue inventado por el grupo de ingenieros de SQL Server , incluido Mosha Pasumansky . La especificación fue seguida rápidamente por el lanzamiento comercial de Microsoft OLAP Services 7.0 en 1998 y más tarde por Microsoft Analysis Services . Microsoft emitió la última versión de la especificación OLE DB para OLAP en 1999.
Si bien no era un estándar abierto, sino una especificación propiedad de Microsoft, fue adoptado por una amplia gama de proveedores de OLAP.
La especificación XML for Analysis hizo referencia a la especificación OLE DB para OLAP para obtener detalles sobre el lenguaje de consulta MDX. En Analysis Services 2005, Microsoft agregó algunas extensiones de lenguaje de consulta MDX como subselecciones. Productos como Microsoft Excel 2007 comenzaron a utilizar estas nuevas extensiones de lenguaje de consulta MDX. Algunos se refieren a esta nueva variante de MDX como MDX 2005.
mdXML
En 2001, el XMLA Council lanzó el estándar XML for Analysis (XMLA), que incluía mdXML como lenguaje de consulta. En la especificación XMLA 1.1, mdXML es esencialmente MDX envuelto en la
etiqueta XML .
Tipos de datos MDX
Hay seis tipos de datos principales en MDX
- Escalar . Escalar es un número o una cadena . Se puede especificar como un literal, por ejemplo, número 5 o cadena "OLAP" o puede ser devuelto por una función MDX, por ejemplo
Aggregate
(número),UniqueName
(cadena),.Value
(número o cadena) etc. - Dimensión / Jerarquía . La dimensión es una dimensión de un cubo . Una dimensión es un organizador principal de la información de medidas y atributos en un cubo. MDX no conoce ni asume ninguna dependencia entre dimensiones; se supone que son mutuamente independientes. Una dimensión contendrá algunos miembros (ver más abajo) organizados en alguna jerarquía o jerarquías que contienen niveles. Puede especificarse por su nombre único, por ejemplo,
[Time]
o puede ser devuelto por una función MDX, por ejemplo.Dimension
. La jerarquía es una jerarquía de dimensiones de un cubo . Puede especificarse por su nombre único, por ejemplo, o puede ser devuelto por una función MDX, por ejemplo . Las jerarquías están contenidas en dimensiones. (La especificación OLEDB para OLAP MDX no distingue entre tipos de datos de dimensión y jerarquía. Algunas implementaciones, como Microsoft Analysis Services, los tratan de manera diferente ) .[Time].[Fiscal]
.Hierarchy
- Nivel . El nivel es un nivel en una jerarquía de dimensiones. Puede especificarse por su nombre único, por ejemplo,
[Time].[Fiscal].[Month]
o puede ser devuelto por una función MDX, por ejemplo.Level
. - Miembro . Miembro es un miembro de una jerarquía de dimensiones. Puede ser especificado por su nombre único, por ejemplo
[Time].[Fiscal].[Month].[August 2006]
, por el nombre calificado, por ejemplo,[Time].[Fiscal].[2006].[Q3].[August 2006]
o ser devuelto por una función MDX, por ejemplo.PrevMember
,.Parent
,.FirstChild
etc. Tenga en cuenta que todos los miembros son específicos de una jerarquía. Si el mismo producto es miembro de dos jerarquías diferentes ([Product].[ByManufacturer]
y[Product].[ByCategory]
), habrá dos miembros diferentes visibles que pueden necesitar ser coordinados en conjuntos y tuplas (ver más abajo). - Tupla . Tuple es una colección ordenada de uno o más miembros de diferentes dimensiones. Las tuplas se pueden especificar enumerando los miembros, por ejemplo,
([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales])
o devueltas por una función MDX, por ejemplo.Item
. - Establecer . Set es una colección ordenada de tuplas con la misma dimensionalidad o jerarquía en el caso de la implementación de Microsoft. Se puede especificar la enumeración de las tuplas, por ejemplo,
{([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])}
o ser devuelto por la función o el operador MDX, por ejemploCrossjoin
,Filter
,Order
,Descendants
etc. - Otros tipos de datos. Las propiedades de los miembros son equivalentes a los atributos en el sentido del almacén de datos. Se pueden recuperar por nombre en una consulta a través de una cláusula de PROPIEDADES de eje de una consulta. Se puede acceder al valor de datos escalares de una propiedad de miembro para algún miembro en una expresión a través de MDX, ya sea nombrando la propiedad (por ejemplo,
[Product].CurrentMember.[Sales Price]
) o usando una función de acceso especial (por ejemplo,[Product].CurrentMember.Properties("Sales Price")
). En contextos limitados, MDX también permite otros tipos de datos; por ejemplo, Array se puede usar dentro de laSetToArray
función para especificar una matriz que no es procesada por MDX pero que se pasa a una función definida por el usuario en una biblioteca ActiveX. Los objetos de otros tipos de datos se representan como cadenas escalares que indican los nombres de los objetos, como el nombre del grupo de medida en laMeasureGroupMeasures
función de Microsoft o el nombre de KPI en, por ejemplo, las funcionesKPIValue
o de MicrosoftKPIGoal
.
Consulta de ejemplo
El siguiente ejemplo, adaptado de los Libros en pantalla de SQL Server 2000, muestra una consulta MDX básica que utiliza la instrucción SELECT. Esta consulta devuelve un conjunto de resultados que contiene los importes de ventas de tienda de 2002 y 2003 para las tiendas del estado de California.
SELECCIONE { [ Medidas ] . [ Ventas en tienda ] } EN COLUMNAS , { [ Fecha ] . [ 2002 ] , [ Fecha ] . [ 2003 ] } EN FILAS DESDE Ventas DÓNDE ( [ Tienda ] . [ EE . UU . ] . [ CA ] )
En este ejemplo, la consulta define la siguiente información del conjunto de resultados
- La cláusula SELECT establece los ejes de consulta como el miembro Ventas en tienda de la dimensión Medidas y los miembros 2002 y 2003 de la dimensión Fecha.
- La cláusula FROM indica que la fuente de datos es el cubo Ventas.
- La cláusula WHERE define el "eje de segmentación" como el miembro de California de la dimensión Store.
Nota: Puede especificar hasta 128 ejes de consulta en una consulta MDX.
Si crea dos ejes, uno debe ser el eje de la columna y el otro debe ser el eje de la fila, aunque no importa en qué orden aparecen dentro de la consulta. Si crea una consulta que tiene solo un eje, debe ser el eje de la columna. Los corchetes alrededor del identificador de objeto particular son opcionales siempre que el identificador de objeto no sea una de las palabras reservadas y no contenga ningún otro carácter que no sean letras, números o guiones bajos.
SELECCIONE [ Medidas ] . [ Ventas en tienda ] EN COLUMNAS , [ Fecha ] . Miembros EN FILAS DESDE Ventas DÓNDE ( [ Tienda ] . [ EE . UU . ] . [ CA ] )
Referencias
- ^ a b Carl Nolan. "Manipular y consultar datos OLAP mediante ADOMD y expresiones multidimensionales" . Microsoft . Consultado el 5 de marzo de 2008 .
Otras lecturas
- George Spofford, Sivakumar Harinath, Chris Webb, Dylan Hai Huang, Francesco Civardi: Soluciones MDX: con Microsoft SQL Server Analysis Services 2005 e Hyperion Essbase . Wiley, 2006, ISBN 0-471-74808-0
- Mosha Pasumansky , Mark Whitehorn, Rob Zare: Acceso rápido a MDX . ISBN 1-84628-174-1
- Larry Sackett: Informes y análisis MDX con SAP NetWeaver BW . Prensa SAP, 2008, 978-1-59229-249-3