INTRODUCCIÓN MDX³n_MDX.pdfMDX significa Multidimensional Expressions, o también MultiDimensional...
Transcript of INTRODUCCIÓN MDX³n_MDX.pdfMDX significa Multidimensional Expressions, o también MultiDimensional...
3 Introducción
Índice de contenido1.Descripción.................................................................................................................3
2.Sintaxis.......................................................................................................................3
3.Conceptos básicos......................................................................................................4
4.Funciones...................................................................................................................4
5.Miembros calculados..................................................................................................5
6.Caso de uso: Creación de consultas MDX..................................................................5
Jortilles.com 2
3 Introducción
1. Descripción
OLAP (OnLine Analytical Processing), procesamiento analítico en línea. Es la soluciónque se utiliza para agilizar consultas con grandes cantidades de datos.
Una herramienta OLAP esta formada por un motor y un visor.
• El motor OLAP es el encargado para organizar datos, especialmente metadatos,sobre un objeto o jerarquía de objetos como en un sistema multidimensional, ycuyo objetivo es recuperar y manipular datos y combinaciones de los mismos através de consultas o incluso informes
Mondrian es un motor/Servidor ROLAP, recibe las consultas en lenguaje MDX ydevuelve los datos.
• El visor OLAP es una interfaz que permite consultar, manipular, reordenar y filtrardatos existentes en una estructura OLAP mediante una interfaz gráfica
Entre los visores encontramos Jpivot de gran potencia, Saiku es un visor de máspotencia y facilidad de uso…
MDX significa Multidimensional Expressions, o también MultiDimensional queryexpression. A pesar de no ser un lenguaje estándar, es considerado el lenguaje deconsulta OLAP estándar. Fue creado en 1997 por Microsoft
Es posible realizar consultas con OLAP, que serian muy complejas con SQL
2. Sintaxis
A pesar de que la sintaxis MDX es compleja, guarda parecido con el lenguaje SQL:
SELECT
{ [Measures].[Quantity] } ON COLUMNS,
{ [Markets].[Territory].Members } ON ROWS
FROM [SteelWheelsSales]
WHERE { [Time].[2005] }
Select → se especifica el conjunto de datos que queremos que nos devuelvaorganizado por columnas y filas
From → se trata del cubo al cual estamos consultando
Where → son las condiciones del filtro.
Los elementos de las dimensiones y niveles van encapsulados entre [ ].
Los conjuntos se representan encapsulados con {}
Jortilles.com 3
3 Introducción
3. Conceptos básicos
• Esquema: es una colección de cubos, dimensiones, tablas de hechos y roles.
• Cubo: es una colección de dimensiones asociadas a una tabla de hecho.
• Dimensión: es una colección de atributos que se relacionan mediante unajerarquía y que se relacionan con los hechos de la dimensión de medidas.
• Medida: es un valor de una tabla de hechos; también se denomina hecho.
• Jerarquía: es un conjunto de miembros organizados en niveles.
• Miembro: es un valor de un atributo de dimensión, incluida la dimensión demedidas
4. Funciones
• CurrentMember: permite acceder al miembro actual.
• Children: permite acceder a todos los hijos de una jerarquía.
• prevMember: permite acceder al miembro anterior de la dimensión.
• Non empty: elimina del resultado de la consulta los valores nulos.
• Hierarchize: Sirve para ordenar los miembros de un conjunto en una jerarquía.
• CrossJoin(conjunto_a,conjunto_b): obtiene el producto cartesiano de dosconjuntos de datos.
• BottomCount(conjunto_datos,N): obtiene un número determinado deelementos de un conjunto, empezando por abajo, opcionalmente ordenado.
• BottomSum (conjunto_datos,N,S): obtiene de un conjunto ordenado los N
• elementos cuyo total es como mínimo el especificado (S).
• Except(conjunto_a,conjunto_b): obtiene la diferencia entre dos conjuntos.
• AVG , COUNT , VARIANCE funciones de suma, contar… y todas lasfunciones trigonométricas (seno, coseno, tangente, etc.).
Funciones de tiempo
• PeriodsToDate: devuelve un conjunto de miembros del mismo nivel que
un miembro determinado, empezando por el primer miembro del mismo
nivel de acuerdo con la restricción especificado en la dimensión de tiempo.
• WTD(<Miembro>): devuelve los miembros de la misma semana del miembroespecificado.
Jortilles.com 4
3 Introducción
• MTD(<Miembro>): devuelve los miembros del mismo mes del miembro
especificado.
• QTY(<Miembro>): devuelve los miembros del mismo trimestre del miembroespecificado.
• YTD(<Miembro>): devuelve los miembros del mismo año del miembro
especificado.
• ParallelPeriod: devuelve un miembro de un periodo anterior en la mismaposición relativa que el miembro especificado
5. Miembros calculados
Un miembro calculado es una métrica que tiene como valor el resultado de laaplicación de una fórmula que puede utilizar todos los elementos disponibles en uncubo.
Estas formulas pueden ser operaciones matemáticas o condiciones.
La estructura es la siguiente:
with member [Measures].[MiMiembroCalculado]
as '[Measures].[Sales] / [Measures].[Quantity]' → esta es la operación
6. Caso de uso: Creación de consultas MDX
Ahora vamos a realizar consultas MDX con Pentaho BI Server, donde el motor OLAP es Mondrian, y el Visor que utilizaremos será Saiku
Abrimos Pentaho, y vamos a File → New → Saiku Analytics
Jortilles.com 5
3 Introducción
Seleccionamos “Create a New Query” para hacer la consulta MDX que queramos:
Así vemos el Visor Saiku. En la columna de la derecha vemos los cubos disponiblesque tenemos, para realizar los ejemplos utilizaremos el cubo de muestra“SteelWheelsSales” .
Una vez seleccionado, debajo vemos las medidas y las dimensiones disponibles parahacer las consultas
Jortilles.com 6
3 Introducción
Podemos arrastrar las medidas y las dimensiones al centro de la pantalla. Si seleccionamos este icono, pasaremos a la vista MDX
Por ejemplo:
Y cambiamos a modo MDX, vemos la consulta:
Jortilles.com 7
3 Introducción
Ahora vamos a realizar unas cuantas consultas con las funciones que hemos visto anteriormente:
➔ Ventas por cliente por order status.
SELECT {[Order Status].[Type].Members} → para acceder a los tipos de order statusON COLUMNS, ( {[Measures]. [Sales]} * [Customers].[Customer].Members ) ON ROWSFROM [SteelWheelsSales]
Jortilles.com 8
3 Introducción
➔ Ventas de los países de EMEA por años.
SELECTNON EMPTY ( {[Measures]. [Sales]} * [Markets].[Territory].[EMEA].children → Para acceder a los descendientes de EMEA utilizamos Children )ON COLUMNS,NON EMPTY {[Time].[Years].Members} ON ROWSFROM [SteelWheelsSales]
Jortilles.com 9
3 Introducción
➔ Cantidad de Ventas ordenadas por Ventas de los clientes el año 2004
SELECT {[Measures].[Quantity]} ON COLUMNS, order( → Ordenamos descendentemente {[Customers].[Customer].members} , [Measures].[Sales], bdesc ) ON ROWS FROM [SteelWheelsSales]WHERE [Time].[2004] → Filtro es la condición, el miembro actual es 2004
Jortilles.com 10
3 Introducción
➔ Top 10 ventas por ciudad
SELECT {[Measures].[Sales]} ON COLUMNS, TopCount( → Top count para seleccionar primeros, después marcamos 10 [Markets].[Country].Members, 10, [Measures].[Sales] ) ON ROWSFROM [SteelWheelsSales]
Jortilles.com 11
3 Introducción
➔ Miembro calculado nuevo como resultado de Ventas por cantidad y definir un conjunto (SET)
with member [Measures].[NuevoValor] as '[Measures].[Sales] * [Measures].[Quantity]' → Definimos un miembro calculadoset countries as '[Markets].[Country].members' → definimos un Set
Select { [Measures].[NuevoValor]} ON COLUMNS, non empty countries ON ROWS FROM [SteelWheelsSales]
Jortilles.com 12
3 Introducción
➔ YTD Devuelve los miembros del año 2004
WITH MEMBER [Measures].[SalesYTD] as 'SUM(YTD([Time].CurrentMember), [Measures].[Sales])'SELECTNON EMPTY {[Measures].[SalesYTD] , [Measures].[Sales]} ON COLUMNS,NON EMPTY [Time].[2004] ON ROWSFROM [SteelWheelsSales]
Jortilles.com 13