Está en la página 1de 10

Sistemas de Informacin Estratgica

MDX
MDX (Expresiones multidimensionales) es un lenguaje para consultas de base de datos multidimensionales, de la misma forma que SQL es usada para consultas sobre base de datos relacionales. Fue originalmente definida como parte de las especificaciones OLE DB. MDX funciona para expresiones multidimensionales. Este es un lenguaje de consultas implementado por Mondrian. Las expresiones multidimensionales (MDX) permiten consultar objetos multidimensionales, como los cubos, y devolver conjuntos de celdas multidimensionales que contengan los datos del cubo. Una consulta bsica de MDX luce como esto: SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS, {[Product].members} ON ROWS FROM [Sales] WHERE [Time].[1997].[Q2]

Consulta de MDX bsica (MDX)


La consulta de MDX (Expresiones multidimensionales) bsica es la instruccin SELECT: la consulta utilizada con ms frecuencia en MDX. Si se comprende cmo una instruccin MDX SELECT debe especificar un conjunto de resultados, en qu consiste la sintaxis de la instruccin SELECT y cmo crear una consulta simple mediante la instruccin SELECT, se tendr un conocimiento slido de cmo utilizar MDX para realizar consultas de datos multidimensionales. Sintaxis de la Instruccin SELECT En la sintaxis siguiente se muestra una instruccin SELECT bsica que incluye el uso de las clusulas SELECT, FROM y WHERE: [ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ] SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ] FROM <SELECT subcube clause> [ <SELECT slicer axis clause> ] [ <SELECT cell property list clause> ] Ejemplo de la Instruccin SELECT En el siguiente ejemplo se muestra una consulta de MDX bsica que utiliza la instruccin SELECT . Esta consulta devuelve un conjunto de resultados que contiene las cifras de ventas e impuestos de 2002 y 2003 de la zona de ventas sudoeste. SELECT { [Measures].[Sales Amount], [Measures].[Tax Amount] } ON COLUMNS, { [Date].[Fiscal].[Fiscal Year].&[2002], [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS FROM [Adventure Works]

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica


WHERE ( [Sales Territory].[Southwest] )

Ejecucin de Consultas
Revisemos el cubo Quadrant Analysis del esquema SampleData.mondrian ubicado en C:\pentaho\bi-server\pentaho-solutions\samples\analysis, este esquema es provedo con la instalacin de Pentaho.

Se probarn algunas de las consultas MDX para la verificacin de este cubo.

Este cubo trabaja con la tabla quadrant _actuals de la base de datos PENTAHO_sampledata. Al momento de conectar el esquema con la plantilla de diseo de consultas MDX se debe verificar que la conexin haya sido exitosa. Se muestra el mensaje Mondrian connection Successful.

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica

Descripcin de la Tabla
La tabla quadrant_actuals registra las cantidades asignadas a cada cargo dentro de un departamento en cada regin. Las cantidades registradas son tres: Actual: Real, cantidad real asignada. Budget: Presupuesto, la cantidad proyectada o presupuestada para ese cargo. Variance: Varianza, la diferencia entre las dos anteriores (Budget-Actual).

Descripcin del Cubo


El cubo Quadrant Analysis trabaja con la tabla de hechos descrita en la parte superior. El cubo presenta tres medidas especficas para cada cantidad registrada en la tabla. Actual: Suma de todas estas cantidades. Budget: Suma de todos los presupuestos. Variance: Suma de todos las cantidades calculadas en el campo Variance. Las medidas realizan sumas y presentas totales y subtotales a manera que se van expandiendo los niveles. Se establece aqu el nivel de detalle en el concepto de granularidad. El nivel ms general tiene que ver con la suma de cantidades de todas las regiones. A un nivel intermedio se encuentra la medida para todos los departamentos por regin. Y en el nivel ms especfico se tiene la suma de todos los cargos por departamento. De la misma manera estas medidas permiten tambin mostrar las cantidades por cada cargo, por cada departamento, por cada regin.

Consultas
1. Consulta General que permite mostrar el total de la medida Actual por todo el conjunto de posiciones, en todos los departamentos de todas las regiones.

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica


select NON EMPTY {[Measures].[Actual]} ON COLUMNS, /*Select marca el inicio de la consulta para los campos no vacios en la medida Actual, estos datos constituyen los valores mostrados en la columna de mi tabla*/ NON EMPTY {([Region].[All Regions], [Department].[All Departments], [Positions].[All Positions])} ON ROWS /*Se debe sealar los valores que se mostraran en las filas de la tabla. En la tabla figurarn los nombres de todas las regiones, de todos los departamentos y de todas las posiciones o cargos.*/ from [Quadrant Analysis] /*la clausula from indica el cubo con el que estoy trabajando*/ Los nombres All Regions, All Deparments y All Positions fueron indicados en la creacin del cubo en el atributo allMenberName del primer nivel de jerarqua de la dimensin Regin, del primer nivel de jerarqua de la dimensin Deparments y en el primer nivel de jerarqua de la dimensin Positions. Copiamos la consulta en el diseador de consultas MDX de Pentaho Schema Workbench, dar clic en Execute

2.

Consulta que devuelve el valor de la medida Actual de todos las posiciones de todos los departamentos detallada por cada Regin. Central, Eastern, Southern, Western. select NON EMPTY {[Measures].[Actual]} ON COLUMNS, NON EMPTY Crossjoin(Hierarchize(Union({[Region].[All Regions]}, [Region].[All Regions].Children)), {([Department].[All Departments], [Positions].[All Positions])}) ON ROWS from [Quadrant Analysis]

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica

Expresin

Descripcin

Sintaxis

Argumentos Set_Expression1 Expresin MDX vlida que devuelve un conjunto. Set_Expression2 Expresin MDX vlida que devuelve un conjunto.

Crossjoin

Devuelve el producto cruzado de uno o ms conjuntos.

Standard syntax Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] ) Alternate syntax Set_Expression1 * Set_Expression2 [* ...n]

El orden de las tuplas en el conjunto resultante depende del orden de los conjuntos que deben unirse y del orden de sus miembros. Por ejemplo, cuando el primer conjunto consta de {x1, x2,...,xn} y el segundo conjunto consta de {y1, y2, ..., yn}, el producto cruzado de estos conjuntos es: {(x1, y1), (x1, y2),...,(x1, yn), (x2, y1), (x2, y2),..., (x2, yn),..., (xn, y1), (xn, y2),..., (xn, yn)}

Set_Expression Expresin MDX vlida que devuelve un conjunto.

Hierarchize

Ordena los miembros de un conjunto en una jerarqua. La funcin siempre conserva los duplicados.

Hierarchize(Set_Expression [ , POST ] )

Si no se especifica POST, la funcin ordena los miembros en un nivel en su orden natural. Si se especifica POST, la funcin Hierarchize ordena los miembros en un nivel siguiendo un orden postnatural.

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica


Set Expression 1 Expresin MDX vlida que devuelve un conjunto.

Union

Devuelve un conjunto generado por la unin de dos conjuntos que, opcionalmente, conserva miembros duplicados.

Standard syntax Union(Set_Expression1, Set_Expression2 [,...n][, ALL]) Alternate syntax 1 Set_Expression1 + Set_Expression2 [+...n] Alternate syntax 2 {Set_Expression1 , Set_Expression2 [,...n]}

Set Expression 2 Expresin MDX vlida que devuelve un conjunto. Con la sintaxis 1 alternativa, los duplicados se eliminan de forma predeterminada.Con la sintaxis estndar, el indicador ALL conserva los duplicados del conjunto combinado. Se eliminan los duplicados de la cola del conjunto. Con la sintaxis alternativa 2, siempre se conservan los duplicados.

Children

Devuelve el conjunto de elementos secundarios de un miembro especificado.

Member_Expression

Member_Expression.Children

Expresin MDX vlida que devuelve un miembro.

Copiamos la consulta en el diseador de consultas MDX de Pentaho Schema Workbench, dar clic en Execute

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica


3. Consulta que muestra los valores de la suma de actual de todas las posiciones en todas las regiones, detallada por cada departamento.

select NON EMPTY {[Measures].[Actual]} ON COLUMNS, NON EMPTY Crossjoin(Hierarchize(Union(Union(Crossjoin({[Region].[All Regions]}, {[Department].[All Departments]}), Crossjoin({[Region].[All Regions]}, [Department].[All Departments].Children)), Crossjoin([Region].[All Regions].Children, {[Department].[All Departments]}))), {[Positions].[All Positions]}) ON ROWS from [Quadrant Analysis] 4. Consulta que muestra los valores de la suma de actual de todas las posiciones en todas las regiones, detallando slo los departamentos de la regin central. select NON EMPTY {[Measures].[Actual]} ON COLUMNS, NON EMPTY Crossjoin(Hierarchize(Union(Union({([Region].[All Regions], [Department].[All Departments])}, Crossjoin([Region].[All Regions].Children, {[Department].[All Departments]})), Crossjoin({[Region].[All Regions].[Central]}, [Department].[All Departments].Children))), {[Positions].[All Positions]}) ON ROWS from [Quadrant Analysis]

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica

5.

Consulta que muestra el valor de la medida actual de cada regin.

select NON EMPTY {[Measures].[Actual]} ON COLUMNS NON EMPTY {[Region].[All Regions].Children} ON ROWS from [Quadrant Analysis]

6.

Consulta que muestra el valor de la medida Actual de todas las posiciones de todos los departamentos detalladas por regin. select NON EMPTY {[Measures].[Actual]} ON COLUMNS, NON EMPTY Crossjoin(Hierarchize([Region].[All Regions].Children), {([Department].[All Departments], [Positions].[All Positions])}) ON ROWS from [Quadrant Analysis]

7.

Consulta que muestra el valor de la medida Actual de todos los departamentos detalladas por regin. select NON EMPTY {[Measures].[Actual]} ON COLUMNS, NON EMPTY Crossjoin({[Region].[All Regions].Children}, {[Department].[All Departments]}) ON ROWS from [Quadrant Analysis]

Docente: Ing. Reiner Guerra Salas

Sistemas de Informacin Estratgica


8. Consulta que muestra el valor de las medidas Actual, Budget y Variance detalladas por regin. select NON EMPTY {[Measures].[Actual], [Measures].[Budget], [Measures].[Variance]} ON COLUMNS, NON EMPTY {[Region].[All Regions].Children} ON ROWS from [Quadrant Analysis]

Ejercicios
Resolver las siguientes consultas de tal modo que muestren los resultados de los campos que se consignan en cada tabla. 1. Consulta General que permite mostrar el total de la medida Budget en todas las regiones.

Medidas Budget All Regions ? Region


2. Consulta General que permite mostrar el total de la medida Variance en todas las regiones.

Medidas Variance All Regions ? Region


3. Consulta que muestra los valores de Actual para cada departamento pero slo de la regin Sur.

Region Departments Southern Executive Management Finance Human Resource Marketing & Comunication Product Development Professional Services Sales Docente: Ing. Reiner Guerra Salas

Medidas Actual ?

Sistemas de Informacin Estratgica


4. Consulta que muestra los valores de Actual para cada departamento pero slo de la regin Este.

Region Eastern

Departments Executive Management Finance Human Resource Marketing & Comunication Product Development Professional Services Sales

Medidas Actual ?

5.

Consulta que muestra los valores de Actual para cada departamento pero slo de la regin Oeste.

Region Departments Western Executive Management Finance Human Resource Marketing & Comunication Product Development Professional Services Sales

Medidas Actual ?

Docente: Ing. Reiner Guerra Salas

10