Tutorial Introducción al MDX: Capítulo 2
Aquí tenemos una nueva entrega del manual de MDX. Siguiendo el hilo del capítulo introductorio y del primer capítulo seguimos avanzando y hoy vemos el capítulo 2.
2.- Principales aspectos de la sintaxis de MDX
El lenguaje MDX permite realizar consultas con una sintaxis parecida al lenguaje natural. Para ejemplificar las consultas y la sintaxis trabajaremos con un ejemplo de un cubo.
Imaginamos un cubo de ventas con las siguientes dimensiones:
Imaginamos un cubo de ventas con las siguientes dimensiones:
- Dimensión temporal de las ventas con niveles de año y mes.
- Dimensión productos vendidos con niveles de familia de productos y productos.
- Dimensión de medidas con importe de las ventas y unidades vendidas
2.1.- Mi primera consulta
Si queremos obtener por ejemplo el importe de las ventas para el año 2008 para la familia de productos lácteos la consulta seria la siguiente:
SELECT
{ [Medidas].[importe ventas]}
on columns,
{ [Tiempo].[2008] }
on rows
FROM [cubo ventas]
WHERE ([Familia].[lacteos])
{ [Medidas].[importe ventas]}
on columns,
{ [Tiempo].[2008] }
on rows
FROM [cubo ventas]
WHERE ([Familia].[lacteos])
2.2.- Analogía con SQL
Analizando la consulta de ejemplo podemos establecer una analogía con el sql para explicar mejor la estructura del lenguaje. En primer lugar tenemos la estructura idéntica general de la consulta con las cláusulas SELECT … FROM … WHERE que en MDX se usa identicamente al sqlespecificando en el select un conjunto de elementos que queremos visualizar, en el fromindicamos el cubo del que queremos sacar la información y en el where las condiciones de filtrado.
Una de las particularidades del MDX es que la información la devuelve en forma tabular normalmente y debe ser procesada. Si os fijáis en la cláusula select se usa la clausula oncolumns. Esta cláusula sirve para separar los elementos que queremos visualizar en las filas de los que queremos en las columnas. En la consulta de ejemplo veremos el importe en las columnas y el tiempo en las filas. Los { } son para permitir listas de elementos en las selecciones y los [] encapsulan elementos de las dimensiones y niveles.
Una de las particularidades del MDX es que la información la devuelve en forma tabular normalmente y debe ser procesada. Si os fijáis en la cláusula select se usa la clausula oncolumns. Esta cláusula sirve para separar los elementos que queremos visualizar en las filas de los que queremos en las columnas. En la consulta de ejemplo veremos el importe en las columnas y el tiempo en las filas. Los { } son para permitir listas de elementos en las selecciones y los [] encapsulan elementos de las dimensiones y niveles.
2.3.- Principales funciones,opciones y elementos MDX
A nivel de funcionalidades y potencia a la hora de realizar consultas el MDX es potente como elSQL aunque su objetivo está orientado a temas de comparaciones, relaciones jerárquicas entre elementos,etc…
Una de las funcionalidades que distinguen al MDX es el acceder a los elementos utilizando estructura de árbol. Así para un Determinado nivel de una dimensión tenemos comandos como:
Una de las funcionalidades que distinguen al MDX es el acceder a los elementos utilizando estructura de árbol. Así para un Determinado nivel de una dimensión tenemos comandos como:
[Familia].[lácteos].CurrentMember : Permite acceder al miembro actual
[Familia].[lácteos].Children : Permite acceder a los hijos de la familia de los lácteos
[Familia].[lácteos].prevMember: Permite acceder al miembro anterior de la dimensión
[Familia].[lácteos].Children : Permite acceder a los hijos de la familia de los lácteos
[Familia].[lácteos].prevMember: Permite acceder al miembro anterior de la dimensión
Por otro lado existen diferentes funciones que permiten realizar cálculos y complementar las consultas como por ejemplo:
CrossJoin(conjunto_a,conjunto_b): Obtiene el producto cartesiano de dos conjuntos de datos.
BottomCount(conjunto_datos,N): Obtener un número determinado de elementos de un conjunto, empezando por abajo, opcionalmente ordenado.
BottomCount(conjunto_datos,N): Obtener un número determinado de elementos de un conjunto, empezando por abajo, opcionalmente ordenado.
BottomSum(conjunto_datos,N,S): Obtener de un conjunto ordenado los N elementos cuyo total es como mínimo el especificado( S).
Except(conjunto_a,conjunto_b): Obtener la diferencia entre dos conjuntos.
Except(conjunto_a,conjunto_b): Obtener la diferencia entre dos conjuntos.
Finalmente comentar que en MDX también están implementadas muchas funciones matemáticas y estadísticas que permiten enriquezer los análisis. Encontramos entre muchas otras funciones como:
AVG
COUNT
VARIANCE
VARIANCEn
y todas las funciones trigonométricas (Seno,Coseno,tangente,etc…)
AVG
COUNT
VARIANCE
VARIANCEn
y todas las funciones trigonométricas (Seno,Coseno,tangente,etc…)
Este capítulo quedo algo largo no? Espero que sea útil