1. Introducción al lenguaje de consulta MDX

MDX (Multi-Dimensional expressions) es un lenguaje de consulta usado para sacar datos de una base de datos multidimensional. Más concretamente, MDX se usa para consultar datos de una base de datos OLAP con Analysis Services y otras herramientas que soporten este lenguaje.

MDX ayuda a crear Reports con más facilidad que con SQL, ya que con SQL tenemos que ir especificando todas las relaciones de las tablas para poder sacar un dato en concreto. En cambio, en MDX ya esta todo relacionado a priori.

Comparación entre SQL y MDX:

  • SQL Relacional / MDX Multidimensional

  • SQL Debes especificar las relaciones (Join) / MDX No se especifican las relaciones
    En SQL para poder sacar informacion relacionada entre dos o más tablas tenemos que especificar los campos que las relacionan, en cambio en MDX no es necesario, porque cuando se genera el cubo define cuáles serán los metadatos y por tanto las jerarquías y sus relaciones.

  • SQL No posicional / MDX Posicional
    SQL no es posicional. Esto significa que en SQL no existe el concepto de record anterior y record posterior, sino que tengo un conjunto de datos y basta. Por tanto, no existe ningún dato agregado ni calculado sino que usamos las funciones de agregación Group By, y SUM en el momento que queremos sacar qualquier dato agregado de una manera dinámica.
    En cambio MDX es posicional, ya que las agregaciones ya estan calculadas y solo se tiene que especificar en que posición se encuentra el dato que se quiere sacar.
    Ejemplo:
    Si hacemos una consulta del facturado del mes de enero 2006, con MDX yo puedo sacar la facturación del mes anterior y posterior con el prevmember o el nextmember o los hijos del año 2005 y dará el facturado de todos los meses del 2005. De esta manera podemos ver la tendencia que tiene el facturado desde el 2005 hasta enero del 2006.

  • SQL no Referenciado / MDX Referenciado
    SQL no es referenciado, ya que como hemos dicho antes cada vez que queremos sacar un dato tenemos que hacer todas las JOIN y todos los cálculos necesarios dinámicamente, ya que no hay nada precalculado.
    En cambio MDX tiene referenciados los datos y no le hace falta usar las funciones de agregado ya que cada cálculo esta guardado en una celda y solo se tiene que especificar la referencia a ella.
    Un ejemplo que explicaría este concepto es: si queremos sacar el facturado del año 2005 no tengo que sumar todos los meses sino que pongo la referencia a la celda donde está ya guardado ese dato.