SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Expresiones MDX en Analysis Services.
Analysis Services

Jorge Bustos | j.bustos@danysoft.com

En este artículo se introducen las bases para entender el lenguaje
de consulta MDX, diseñado para realizar consultas sobre cubos
OLAP en general, y en Analysis Services en particular. Se explican
los conceptos básicos y se ofrecen algunas muestras con la base
de datos de ejemplo Foodmaret incluida en Analysis Services.

          Para leer este artículo debería estar mínimamente familiarizado con los cubos
          OLAP, conocer lo que son y haberlos manejado con cualquier tipo de
          herramienta cliente. Asimismo es recomendable tener Analysis Services
          instalado, de modo que puedan ejecutarse los ejemplos propuestos.


Consulta de bases de datos multidimensionales con MDX
En estos tiempos en que Business Intelligence se está convirtiendo en uno de los temas más en boga dentro
de las Tecnologías de la Información, merece la pena hablar de un lenguaje cuya popularidad irá ganando
terreno. Del mismo modo que el lenguaje SQL es el estándar para la consulta de bases de datos relacionales,
MDX lo es para las bases de datos multidimensionales, conocidas habitualmente como OLAP.

MDX es el acrónimo de MultiDimensional eXpressions, lo que da una idea de cual es su finalidad exacta.


¿Qué devuelve una consulta MDX?
Del mismo modo que una consulta SQL devuelve un conjunto de datos, una expresión MDX devuelve un
conjunto de celdas que es el resultado de tomar un subconjunto de las celdas del cubo original. Por ejemplo,
se puede considerar que este cubo completo es el punto de partida para la consulta.




Desde cualquier aplicación cliente OLAP, se pueden hacer varios tipos de manipulaciones a este cubo:
    •   Girarlo, que consiste en cambiar el lugar que ocupan las dimensiones.
        Es decir, asociar las dimensiones a diferentes ejes.



              05/09/2005 | Valor añadido Danysoft | 902 123146 | www.danysoft.com | Página 1.11
•    Rebanarlo, que consiste en elegir un “corte” del cubo, correspondiente a
         un miembro concreto de una dimensión.
    •    Cortarlo en dados, que consiste en elegir un trozo particular del cubo
         limitando los miembros elegidos para visualizar en cada dimensión.

Girar un cubo consiste en cambiar las dimensiones asociadas a cada eje. El siguiente dibujo muestra el
resultado de girar el cubo original, mostrado en la figura de arriba.




Como se puede apreciar, el cubo es el mismo, pero los ejes ocupados por las dimensiones de meses,
provincias y productos se han cambiado, resultando en una vista diferente de los mismos datos.

Otra operación que se puede realizar en un cubo, según se mencionaba arriba, es su “rebanado”. Rebanar un
cubo es, en cierta manera, filtrar los datos que se quieren visualizar del mismo. (El “en cierta manera” es
porque en MDX hay una diferencia sustancial entre filtrado y rebanado).

Por ejemplo, tal como está el cubo orientado tras haberlo girado, podría ser interesante examinar los datos de
una provincia concreta. De este modo se conseguiría un conjunto de celdas distribuido en dos dimensiones,
que es lo que realmente se puede visualizar en cualquier aplicación cliente de cubos OLAP. La siguiente
imagen muestra el cubo rebanado:




El rebanado consiste en elegir un miembro concreto de una dimensión para visualizar sólo los datos
correspondientes al mismo. En este ejemplo se ha elegido el miembro Zaragoza de la dimensión Provincias,
de modo que estamos viendo los datos de Zaragoza para todos los meses y todos los productos existentes en
el cubo.
La última operación que se mencionaba arriba era “cortarlo en dados”. Cortar el cubo en dados supone
mostrar sólo los datos correspondientes a miembros concretos elegidos en cada dimensión. Esta operación
puede parecer lo mismo que el rebanado, pero hay dos diferencias fundamentales:
    •    En el rebanado, la dimensión elegida para rebanar no está en un eje
         visible. En el ejemplo de arriba se puede ver que en el momento de
         rebanar, la dimensión provincias ha dejado de estar en un eje.
    •    De la dimensión utilizada para rebanar sólo se puede elegir un único
         miembro. En cambio, en las dimensiones pertenecientes a los ejes se
         pueden elegir todos los miembros que se desee.

Un ejemplo de hacer dados a este cubo consistiría en tomar solo parte de los miembros de las dos
dimensiones visibles en los ejes, dejando ocultos todos los demás.




En el ejemplo de arriba sólo se están visualizando las bebidas, en la dimensión de productos, y el 2º trimestre,
en la dimensión de los meses. Si no estuviera rebanado, esto nos daría un dado completo, resultante de
trocear el cubo original, que comprendería las bebidas, el segundo trimestre, y todas las provincias. Pero el
dado de la figura además está rebanado, de modo que sólo se toma la provincia de Zaragoza y, más que un
dado, es una rebanada de un dado.

Una nota sobre nomenclatura: a las dos últimas operaciones mencionadas se les suele denominar “Slice &
Dice” en la jerga inglesa de OLAP. La palabra rebanar y rebanador es la utilizada por Microsoft en la ayuda
de Analysis Services. Y “hacer dados”, es la traducción literal de dice. Ambas expresiones, las tomemos en
inglés o en su traducción al castellano, son muy visuales, y representan muy bien lo que le sucede al cubo
original.

Aunque en rigor no es lo mismo, muchas veces al rebanado se le denomina paginación. En realidad la
paginación correspondería al tercer eje de las expresiones MDX, que no se suele utilizar nunca, dado que no
es posible visualizar más de dos ejes. Así que la tercera y siguientes dimensiones nunca suelen ir en los ejes
de la consulta, sino en los rebanadores.

En el ejemplo utilizado, el cubo sólo dispone de tres dimensiones. Naturalmente, en los cubos que se
explotan habitualmente suele haber más de tres dimensiones. La elección de un cubo de tres dimensiones se
ha hecho intencionadamente para simplificar el ejemplo, y permitir que siga siendo muy visual, dado que no
tenemos la capacidad de visualizar más de tres dimensiones mediante dibujos. Hacer ejemplos de más de tres
dimensiones obligaría entrar en terrenos demasiado abstractos. Por tanto, aunque el ejemplo haya sido sobre
3 dimensiones, los conceptos explicados se pueden extender a cualquier número de dimensiones.

¿Qué son las medidas de un cubo?
En los ejemplos de arriba se ha obviado deliberadamente el tema de las medidas. Se ha hablado de los cubos
y de sus celdas, y de qué celdas se muestran y de cómo se muestran. Incluso se ha hablado de que, en dichas
celdas, hay datos. Sin embargo nada más se ha dicho sobre los datos de las celdas. A continuación se explica
que datos hay en ellas.
A los datos existentes en cada celda de los cubos se les denomina medidas. En el cubo empleado para los
ejemplos la medida podría ser el número de unidades vendidas, o el costo de fabricación de los productos
vendidos, o la cifra neta de ventas, o el beneficio neto de las ventas. Es más, el cubo podría tener todas estas
medidas definidas. Sin embargo sólo es posible ver un dato en cada celda en cada momento. Es decir, hay
que elegir que medida se quiere ver en cada momento en las celdas del cubo.

En el siguiente apartado se explica como se utilizan las medidas en las expresiones MDX de Analysis
Services.


¿Cómo se tratan las medidas en MDX?
En MDX, las medidas se tratan como si fueran una dimensión más del cubo, de modo que se puede hacer dos
cosas con ellas:
    •    Utilizarlas para rebanar, eligiendo una medida concreta para visualizarla
         en el cubo.
    •    Mostrar las medidas en un eje, como si se tratara de otra dimensión
         cualquiera.

Concretando aún más, en las expresiones MDX las medidas se tratan como si pertenecieran a una dimensión
que siempre se va a llamar Measures, cuyos miembros son los nombres de las diferentes medidas definidas
en el cubo.


¿Para qué se utilizan las consultas MDX?
Afortunadamente para los usuarios finales, el conocimiento de las consultas MDX no es necesario para poder
realizar la serie de manipulaciones básicas que se han ido mencionando en los apartados anteriores. Cualquier
herramienta cliente de OLAP permite visualizar el cubo, girarlo, hacerlo dados, rebanarlo, e incluso realizar
otra serie de operaciones más avanzadas, como ordenar, filtrar por valores, añadir cálculos, etc. Sin embargo,
detrás de todas estas operaciones, suele existir una consulta MDX. (Algunos sistemas OLAP funcionan de
otra manera, siendo específicos de determinados fabricantes).

En definitiva, el usuario final de una aplicación cliente OLAP nunca tiene por que verse involucrado con la
creación de consultas MDX ya que dicha aplicación las crea automáticamente para él.

Entonces ¿para qué se necesita MDX? Existen varios motivos que se enuncian a continuación.

Al igual que en SQL, en MDX se pueden utilizar expresiones para manipular los datos, ordenarlos, filtrarlos,
agruparlos, realizar cálculos con ellos, etc. Dichas expresiones deben escribirse, como no podía ser de otra
manera, con la sintaxis de MDX.

A veces hace falta realizar consultas más avanzadas que las permitidas por los clientes OLAP.

También puede ser necesario conocer la sintaxis MDX para crear miembros o celdas calculadas, incluso
cuando se está utilizando una buena aplicación cliente OLAP.

Y, por último, muchas veces, al desarrollar una aplicación, o un informe, no queda más remedio que escribir
la expresión MDX a mano. Este es el caso, por ejemplo, de Reporting Services. Cuando se desean mostrar los
datos de un cubo en un informe realizado con esta herramienta, es necesario escribir la consulta que se desea
visualizar. Cuando se quieren leer datos de un cubo desde una aplicación personalizada sucede lo mismo.


¿Cómo se conectan las aplicaciones a los servidores de cubos?
Aunque en su momento trataron de implantarse otros estándares, y fuera de las conexiones específicas entre
los servidores y clientes de determinados fabricantes de productos OLAP, el estándar de facto, sin ningún
lugar a dudas, es ADO MD, o ADO con extensiones multidimensionales, si se utiliza el nombre largo.

ADO MD se puede considerar como “el ODBC de las bases de datos multidimensionales” en el sentido de
que está tan generalizado entre las bases multidimensionales como ODBC en las relacionales. O, si aún no
llega al mismo nivel de generalización, algún día lo hará.
Con este tipo de conexión, y mediante la utilización de expresiones MDX, es posible obtener datos de un
cubo desde múltiples lenguajes de programación. Por ejemplo se puede utilizar en Visual Basic o en los
lenguajes .NET.


¿Cómo se pueden escribir y probar las expresiones MDX?
A falta de una herramienta más avanzada para ello, como la que aparecerá en SQL Server 2005, el único
modo de probar las expresiones MDX es utilizando una aplicación de ejemplo a la que se accede desde
Analysis Manager.

Dicha aplicación de ejemplo se encuentra dentro del menú SQL Server, en el grupo de Analysis Services. Al
abrir el programa hay que introducir los datos para realizar la conexión:




Se debe proporcionar el nombre del servidor, donde puede especificarse su nombre de red, y el proveedor,
que será MSOLAP para conectarse a Analysis Services.

La seguridad de Analysis Services va integrada con la de Windows y, por defecto, el Administrador de
Windows puede acceder a los cubos sin ningún tipo de limitación.

La aplicación tiene una interfaz básica, pero más que suficiente para realizar pruebas. Consta de un cuadro de
texto donde se escribirá la consulta, un explorador de cubos que permite examinar los miembros y niveles de
las dimensiones, una lista de los elementos de la sintaxis MDX y una rejilla que se crea al ejecutar las
consultas para mostrar sus resultados:
Los nombres de los niveles de las dimensiones y de los miembros se pueden arrastrar directamente desde el
explorador al cuadro de texto como ayuda para escribir las consultas.


¿Cómo se escribe una consulta MDX básica?
A través de unos pocos ejemplos se va a dar una visión global del aspecto de las consultas MDX más básicas.
Para ejecutar las consultas puede utilizarse la aplicación de ejemplo mencionada arriba, conectándose a la
base de datos de ejemplo Foodmart 2000.

La sintaxis básica es:

       SELECT <especificación de eje> on columns,
                  <especificación de eje> on rows
       FROM <especificación de cubo>
       WHERE <especificación Slicer (rebanador)>

En vez de entrar de lleno en ella es mejor partir de ejemplos más sencillos, como el siguiente:

       SELECT
       FROM Sales

Ya que no se han especificado ejes, esta consulta únicamente devuelve una celda, correspondiente a los datos
acumulados del cubo completo. Más precisamente, las dimensiones tienen un miembro por defecto, que es el
que toman cuando no se especifican en la consulta MDX. Normalmente este es el miembro “todos”, por lo
que esta consulta devuelve el resultado global de todos los datos del cubo. Es decir, para cada dimensión, al
no haberse especificado nada, se elige el miembro “todos” que engloba a toda la jerarquía de la dimensión.
La oveja negra, es la dimensión de medidas, Measures, para la que no existe un miembro “todos”, sino que
hay una medida por defecto, especificada al crear el cubo, elegida entre todas las medidas existentes. El valor
de la celda se corresponde a la medida Unit Sales.

Para especificar un rebanador, basta con escribir el nombre de un miembro concreto de una dimensión tras el
WHERE. La consulta anterior, por tanto, sería totalmente equivalente a:

       SELECT
       FROM Sales
       WHERE [Measures].[Unit Sales]

En la consulta puede especificarse el número de ejes que se desee, aunque debe respetarse que el primer eje
sea el de columnas, el segundo el de filas, el tercero el de páginas, etc. En este caso, y en la mayoría de los
casos, la aplicación sólo soporta un máximo de dos ejes. Eso es natural, si se recuerda lo que se comentaba
sobre los ejes y rebanadores al principio de este artículo.

Una consulta que especifica un eje tiene este aspecto:

       SELECT
           {[Product].[All Products].[Drink].[Beverages],
             [Product].[All Products].[Drink].[Dairy],
             [Product].[All Products].[Food].[Eggs],
             [Product].[All Products].[Food].[Meat]} on columns
       FROM Sales

Como es aprecia, la especificación de un eje consiste en definir los miembros de la dimensión que se
aparecerán en el eje. Este es el resultado:




Naturalmente existen medios para no tener que especificar uno a uno todos los miembros, como la función
Members, que devuelve la lista de todos los miembros de un nivel de una dimensión:

       SELECT
           {[Product].[Product Department].Members} on columns
       FROM Sales

El resultado es ahora mucho más largo, ya que muestra todos los departamentos de producto existentes en el
cubo.

Se puede introducir un segundo eje, como el nivel de ingresos de los compradores:

       SELECT
           {[Product].[Product Department].Members} on columns,
           {[Yearly Income].[Yearly Income].Members} on rows
       FROM Sales

Siendo el resultado de la consulta, aunque no se muestre completo, este:
El girar el cubo es tan sencillo como cambiar las dimensiones mostradas en cada eje:

       SELECT
           {[Yearly Income].[Yearly Income].Members} on columns,
           {[Product].[Product Department].Members} on rows
       FROM Sales
       WHERE [Measures].[Unit Sales]

En este caso el resultado, (igualmente incompleto) queda así:




Se comentó más arriba que las medidas pueden tratarse como si fueran una dimensión más del cubo. Arriba,
en la segunda consulta de ejemplo, ya se vio como se podía utilizar la dimensión Measures como rebanador.
Aquí se muestra una consulta que utiliza la dimensión Measures para definir un eje:

       SELECT
           {[Measures].[MeasuresLevel].Members} on columns,
           {[Product].[Product Department].Members} on rows
       FROM Sales

Siendo este el resultado:
Para terminar, este es un ejemplo de una expresión que contiene varios rebanadores, y que muestra una
información muy concreta del cubo original:

       SELECT
          {[Product].[All Products].[Drink].[Alcoholic
       Beverages].[Beer and Wine],
           [Product].[All Products].[Drink].[Beverages].[Carbonated
       Beverages],
           [Product].[All Products].[Drink].[Beverages].[Pure Juice
       Beverages]}
           on columns,
             {[Promotion Media].[All Media].[TV]}
           on rows
       FROM Sales
       WHERE
       ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q2],
        [Marital Status].[All Marital Status].[M],
       [Measures].[Profit])

Esta consulta devuelve los beneficios (Profit) de las ventas de cerveza y vino, bebidas gaseosas y zumos, en
California (CA), en el segundo trimestre del 97 (Q2), para los casados (M), mostrando las cifras para las
promociones de TV y Radio.




Se puede apreciar que hay celdas, filas y columnas vacías. Las filas o columnas completamente vacías
pueden eliminarse del resultado anteponiendo las palabras claves NON EMPTY a la especificación del eje
correspondiente:

       SELECT
           NON EMPTY
          {[Product].[All Products].[Drink].[Alcoholic
       Beverages].[Beer and Wine],
           [Product].[All Products].[Drink].[Beverages].[Carbonated
       Beverages],
           [Product].[All Products].[Drink].[Beverages].[Pure Juice
       Beverages]}
on columns,
            NON EMPTY
            {[Promotion Media].[All Media].[TV]}
            on rows
        FROM Sales
        WHERE
        ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q2],
         [Marital Status].[All Marital Status].[M],
        [Measures].[Profit])

Y el resultado de la consulta pasa a ser este orto:




Sólo se ha mostrado la sintaxis más básica de MDX. Este lenguaje de consulta es, como puede imaginarse,
mucho más potente. En el siguiente apartado se comentan más posibilidades ofrecidas por MDX.


¿Qué más puede hacerse con MDX?
El lenguaje MDX permite hacer consultas muy avanzadas, obteniendo información que no está directamente
disponible en las dimensiones del cubo. Por poner algunos ejemplos:
    •    Pueden combinarse varias dimensiones en solo eje, haciendo que una
         dimensión subdivida a otra. Esto también es algo muy habitual en los
         clientes OLAP.
    •    Pueden realizarse consultas con miembros y celdas calculadas: esto
         permite calcular una nueva medida a partir de otras medidas existentes
         en un cubo, o crear un nuevo miembro que englobe la dimensión de
         varios miembros existentes.
    •    Es posible crear consultas que ordenen y filtren el cubo basándose en
         los valores de las celdas (medidas), en vez de basarlo en los nombres
         de los miembros de las dimensiones. Entre otras cosas esto permite
         realizar análisis ABC, o de Pareto, u 80/20, como se prefiera llamarlo,
         sobre los miembros de una dimensión.
    •    Se pueden realizar agregaciones de datos (sumas, medias, máximos,
         etc.) del mismo modo que en SQL.
    •    Entre las agregaciones, un caso algo especial son los recuentos y,
         especialmente, los recuentos distintivos, que respondan a preguntas
         como cuantos clientes han comprado un producto determinado en un
         rango de fechas dado, o cuantos clientes han comprado dos productos
         concretos en otro rango de fechas determinado.

Algunas de estas consultas no son tan fáciles de realizar como podría pensarse y requieren un conocimiento y
una experiencia grande en MDX, del mismo modo que sucede con las consultas SQL complejas. Aún más,
hay determinadas consultas MDX capaces de proporcionar información que aparentemente no existe en el
cubo. Solo una gran dosis de experiencia permite conocer las posibilidades reales de este lenguaje.


¿Cómo seguir avanzando?
Quizás usted se encuentre involucrado ahora, o vaya a estarlo en algún momento del futuro próximo, en un
proyecto en el que necesite realizar este tipo de consultas… incluso puede que su proyecto consista en la
implantación de un Data Warehouse completo o en la creación de los cubos. Si es así, puede contar con los
Servicios Profesionales de Danysoft para recibir la formación adecuada, o realizar la consultoría necesaria,
para llevar su proyecto a buen puerto.
Para más información.
Si desea hacernos un comentario sobre este artículo, contáctenos en
attcliente@danysoft.com o en el 902 123146.

Más contenido relacionado

La actualidad más candente

Analisys services 2005 cubos olap con o sin data warehouse
Analisys services 2005 cubos olap con o sin data warehouseAnalisys services 2005 cubos olap con o sin data warehouse
Analisys services 2005 cubos olap con o sin data warehouseSalvador Ramos
 
Informatica...juank
Informatica...juankInformatica...juank
Informatica...juankjuankarias
 
Informatica...juank
Informatica...juankInformatica...juank
Informatica...juankjuankarias
 

La actualidad más candente (6)

Base De Datos
Base De DatosBase De Datos
Base De Datos
 
2011
20112011
2011
 
2011
20112011
2011
 
Analisys services 2005 cubos olap con o sin data warehouse
Analisys services 2005 cubos olap con o sin data warehouseAnalisys services 2005 cubos olap con o sin data warehouse
Analisys services 2005 cubos olap con o sin data warehouse
 
Informatica...juank
Informatica...juankInformatica...juank
Informatica...juank
 
Informatica...juank
Informatica...juankInformatica...juank
Informatica...juank
 

Destacado

20 Ideas for your Website Homepage Content
20 Ideas for your Website Homepage Content20 Ideas for your Website Homepage Content
20 Ideas for your Website Homepage ContentBarry Feldman
 
50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)Heinz Marketing Inc
 
Prototyping is an attitude
Prototyping is an attitudePrototyping is an attitude
Prototyping is an attitudeWith Company
 
10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer ExperienceYuan Wang
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanPost Planner
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 

Destacado (8)

Trabajo manual mdx
Trabajo manual mdxTrabajo manual mdx
Trabajo manual mdx
 
20 Ideas for your Website Homepage Content
20 Ideas for your Website Homepage Content20 Ideas for your Website Homepage Content
20 Ideas for your Website Homepage Content
 
50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)
 
Prototyping is an attitude
Prototyping is an attitudePrototyping is an attitude
Prototyping is an attitude
 
10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media Plan
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 

Similar a Consultas MDX para bases de datos multidimensionales

Similar a Consultas MDX para bases de datos multidimensionales (20)

Resumen Semana 3 Topicos
Resumen Semana 3 TopicosResumen Semana 3 Topicos
Resumen Semana 3 Topicos
 
Cubos ppt
Cubos pptCubos ppt
Cubos ppt
 
Base de datos multidimensional
Base de datos multidimensionalBase de datos multidimensional
Base de datos multidimensional
 
Trabajo ayudantia
Trabajo ayudantiaTrabajo ayudantia
Trabajo ayudantia
 
Proyecto de base ii
Proyecto de base iiProyecto de base ii
Proyecto de base ii
 
Unidad 3 tsbd olap
Unidad 3 tsbd olapUnidad 3 tsbd olap
Unidad 3 tsbd olap
 
Unidad 3 tsbd olap
Unidad 3 tsbd olapUnidad 3 tsbd olap
Unidad 3 tsbd olap
 
Unidad 3 tsbd olap
Unidad 3 tsbd olapUnidad 3 tsbd olap
Unidad 3 tsbd olap
 
Unidad 3 tsbd olap
Unidad 3 tsbd olapUnidad 3 tsbd olap
Unidad 3 tsbd olap
 
Arquitectura de datos empresariales actividad 3
Arquitectura de datos empresariales   actividad 3Arquitectura de datos empresariales   actividad 3
Arquitectura de datos empresariales actividad 3
 
2 Desa Sincrono 2 Caso Modelamiento.doc
2 Desa Sincrono 2 Caso Modelamiento.doc2 Desa Sincrono 2 Caso Modelamiento.doc
2 Desa Sincrono 2 Caso Modelamiento.doc
 
Tecnicas de presentacion de Cubos de analisis OLAP.pptx
Tecnicas de presentacion de Cubos de analisis OLAP.pptxTecnicas de presentacion de Cubos de analisis OLAP.pptx
Tecnicas de presentacion de Cubos de analisis OLAP.pptx
 
trabajo informatica base de datos
trabajo informatica base de datos trabajo informatica base de datos
trabajo informatica base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Access
AccessAccess
Access
 
E:\Ricardo Topicos\Ultimo Corte\Tareas 16 Abril
E:\Ricardo Topicos\Ultimo Corte\Tareas 16 AbrilE:\Ricardo Topicos\Ultimo Corte\Tareas 16 Abril
E:\Ricardo Topicos\Ultimo Corte\Tareas 16 Abril
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clases
 
Cubos de datos
Cubos de datosCubos de datos
Cubos de datos
 
Normas icontec26 08 15 torre ........
Normas icontec26 08 15 torre ........Normas icontec26 08 15 torre ........
Normas icontec26 08 15 torre ........
 
Analisis y mineriadedatos
Analisis y mineriadedatosAnalisis y mineriadedatos
Analisis y mineriadedatos
 

Último

MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAlejandrino Halire Ccahuana
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajeKattyMoran3
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJOLeninCariMogrovejo
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 

Último (20)

MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdf
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguaje
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 

Consultas MDX para bases de datos multidimensionales

  • 1. Expresiones MDX en Analysis Services. Analysis Services Jorge Bustos | j.bustos@danysoft.com En este artículo se introducen las bases para entender el lenguaje de consulta MDX, diseñado para realizar consultas sobre cubos OLAP en general, y en Analysis Services en particular. Se explican los conceptos básicos y se ofrecen algunas muestras con la base de datos de ejemplo Foodmaret incluida en Analysis Services. Para leer este artículo debería estar mínimamente familiarizado con los cubos OLAP, conocer lo que son y haberlos manejado con cualquier tipo de herramienta cliente. Asimismo es recomendable tener Analysis Services instalado, de modo que puedan ejecutarse los ejemplos propuestos. Consulta de bases de datos multidimensionales con MDX En estos tiempos en que Business Intelligence se está convirtiendo en uno de los temas más en boga dentro de las Tecnologías de la Información, merece la pena hablar de un lenguaje cuya popularidad irá ganando terreno. Del mismo modo que el lenguaje SQL es el estándar para la consulta de bases de datos relacionales, MDX lo es para las bases de datos multidimensionales, conocidas habitualmente como OLAP. MDX es el acrónimo de MultiDimensional eXpressions, lo que da una idea de cual es su finalidad exacta. ¿Qué devuelve una consulta MDX? Del mismo modo que una consulta SQL devuelve un conjunto de datos, una expresión MDX devuelve un conjunto de celdas que es el resultado de tomar un subconjunto de las celdas del cubo original. Por ejemplo, se puede considerar que este cubo completo es el punto de partida para la consulta. Desde cualquier aplicación cliente OLAP, se pueden hacer varios tipos de manipulaciones a este cubo: • Girarlo, que consiste en cambiar el lugar que ocupan las dimensiones. Es decir, asociar las dimensiones a diferentes ejes. 05/09/2005 | Valor añadido Danysoft | 902 123146 | www.danysoft.com | Página 1.11
  • 2. Rebanarlo, que consiste en elegir un “corte” del cubo, correspondiente a un miembro concreto de una dimensión. • Cortarlo en dados, que consiste en elegir un trozo particular del cubo limitando los miembros elegidos para visualizar en cada dimensión. Girar un cubo consiste en cambiar las dimensiones asociadas a cada eje. El siguiente dibujo muestra el resultado de girar el cubo original, mostrado en la figura de arriba. Como se puede apreciar, el cubo es el mismo, pero los ejes ocupados por las dimensiones de meses, provincias y productos se han cambiado, resultando en una vista diferente de los mismos datos. Otra operación que se puede realizar en un cubo, según se mencionaba arriba, es su “rebanado”. Rebanar un cubo es, en cierta manera, filtrar los datos que se quieren visualizar del mismo. (El “en cierta manera” es porque en MDX hay una diferencia sustancial entre filtrado y rebanado). Por ejemplo, tal como está el cubo orientado tras haberlo girado, podría ser interesante examinar los datos de una provincia concreta. De este modo se conseguiría un conjunto de celdas distribuido en dos dimensiones, que es lo que realmente se puede visualizar en cualquier aplicación cliente de cubos OLAP. La siguiente imagen muestra el cubo rebanado: El rebanado consiste en elegir un miembro concreto de una dimensión para visualizar sólo los datos correspondientes al mismo. En este ejemplo se ha elegido el miembro Zaragoza de la dimensión Provincias, de modo que estamos viendo los datos de Zaragoza para todos los meses y todos los productos existentes en el cubo.
  • 3. La última operación que se mencionaba arriba era “cortarlo en dados”. Cortar el cubo en dados supone mostrar sólo los datos correspondientes a miembros concretos elegidos en cada dimensión. Esta operación puede parecer lo mismo que el rebanado, pero hay dos diferencias fundamentales: • En el rebanado, la dimensión elegida para rebanar no está en un eje visible. En el ejemplo de arriba se puede ver que en el momento de rebanar, la dimensión provincias ha dejado de estar en un eje. • De la dimensión utilizada para rebanar sólo se puede elegir un único miembro. En cambio, en las dimensiones pertenecientes a los ejes se pueden elegir todos los miembros que se desee. Un ejemplo de hacer dados a este cubo consistiría en tomar solo parte de los miembros de las dos dimensiones visibles en los ejes, dejando ocultos todos los demás. En el ejemplo de arriba sólo se están visualizando las bebidas, en la dimensión de productos, y el 2º trimestre, en la dimensión de los meses. Si no estuviera rebanado, esto nos daría un dado completo, resultante de trocear el cubo original, que comprendería las bebidas, el segundo trimestre, y todas las provincias. Pero el dado de la figura además está rebanado, de modo que sólo se toma la provincia de Zaragoza y, más que un dado, es una rebanada de un dado. Una nota sobre nomenclatura: a las dos últimas operaciones mencionadas se les suele denominar “Slice & Dice” en la jerga inglesa de OLAP. La palabra rebanar y rebanador es la utilizada por Microsoft en la ayuda de Analysis Services. Y “hacer dados”, es la traducción literal de dice. Ambas expresiones, las tomemos en inglés o en su traducción al castellano, son muy visuales, y representan muy bien lo que le sucede al cubo original. Aunque en rigor no es lo mismo, muchas veces al rebanado se le denomina paginación. En realidad la paginación correspondería al tercer eje de las expresiones MDX, que no se suele utilizar nunca, dado que no es posible visualizar más de dos ejes. Así que la tercera y siguientes dimensiones nunca suelen ir en los ejes de la consulta, sino en los rebanadores. En el ejemplo utilizado, el cubo sólo dispone de tres dimensiones. Naturalmente, en los cubos que se explotan habitualmente suele haber más de tres dimensiones. La elección de un cubo de tres dimensiones se ha hecho intencionadamente para simplificar el ejemplo, y permitir que siga siendo muy visual, dado que no tenemos la capacidad de visualizar más de tres dimensiones mediante dibujos. Hacer ejemplos de más de tres dimensiones obligaría entrar en terrenos demasiado abstractos. Por tanto, aunque el ejemplo haya sido sobre 3 dimensiones, los conceptos explicados se pueden extender a cualquier número de dimensiones. ¿Qué son las medidas de un cubo? En los ejemplos de arriba se ha obviado deliberadamente el tema de las medidas. Se ha hablado de los cubos y de sus celdas, y de qué celdas se muestran y de cómo se muestran. Incluso se ha hablado de que, en dichas celdas, hay datos. Sin embargo nada más se ha dicho sobre los datos de las celdas. A continuación se explica que datos hay en ellas.
  • 4. A los datos existentes en cada celda de los cubos se les denomina medidas. En el cubo empleado para los ejemplos la medida podría ser el número de unidades vendidas, o el costo de fabricación de los productos vendidos, o la cifra neta de ventas, o el beneficio neto de las ventas. Es más, el cubo podría tener todas estas medidas definidas. Sin embargo sólo es posible ver un dato en cada celda en cada momento. Es decir, hay que elegir que medida se quiere ver en cada momento en las celdas del cubo. En el siguiente apartado se explica como se utilizan las medidas en las expresiones MDX de Analysis Services. ¿Cómo se tratan las medidas en MDX? En MDX, las medidas se tratan como si fueran una dimensión más del cubo, de modo que se puede hacer dos cosas con ellas: • Utilizarlas para rebanar, eligiendo una medida concreta para visualizarla en el cubo. • Mostrar las medidas en un eje, como si se tratara de otra dimensión cualquiera. Concretando aún más, en las expresiones MDX las medidas se tratan como si pertenecieran a una dimensión que siempre se va a llamar Measures, cuyos miembros son los nombres de las diferentes medidas definidas en el cubo. ¿Para qué se utilizan las consultas MDX? Afortunadamente para los usuarios finales, el conocimiento de las consultas MDX no es necesario para poder realizar la serie de manipulaciones básicas que se han ido mencionando en los apartados anteriores. Cualquier herramienta cliente de OLAP permite visualizar el cubo, girarlo, hacerlo dados, rebanarlo, e incluso realizar otra serie de operaciones más avanzadas, como ordenar, filtrar por valores, añadir cálculos, etc. Sin embargo, detrás de todas estas operaciones, suele existir una consulta MDX. (Algunos sistemas OLAP funcionan de otra manera, siendo específicos de determinados fabricantes). En definitiva, el usuario final de una aplicación cliente OLAP nunca tiene por que verse involucrado con la creación de consultas MDX ya que dicha aplicación las crea automáticamente para él. Entonces ¿para qué se necesita MDX? Existen varios motivos que se enuncian a continuación. Al igual que en SQL, en MDX se pueden utilizar expresiones para manipular los datos, ordenarlos, filtrarlos, agruparlos, realizar cálculos con ellos, etc. Dichas expresiones deben escribirse, como no podía ser de otra manera, con la sintaxis de MDX. A veces hace falta realizar consultas más avanzadas que las permitidas por los clientes OLAP. También puede ser necesario conocer la sintaxis MDX para crear miembros o celdas calculadas, incluso cuando se está utilizando una buena aplicación cliente OLAP. Y, por último, muchas veces, al desarrollar una aplicación, o un informe, no queda más remedio que escribir la expresión MDX a mano. Este es el caso, por ejemplo, de Reporting Services. Cuando se desean mostrar los datos de un cubo en un informe realizado con esta herramienta, es necesario escribir la consulta que se desea visualizar. Cuando se quieren leer datos de un cubo desde una aplicación personalizada sucede lo mismo. ¿Cómo se conectan las aplicaciones a los servidores de cubos? Aunque en su momento trataron de implantarse otros estándares, y fuera de las conexiones específicas entre los servidores y clientes de determinados fabricantes de productos OLAP, el estándar de facto, sin ningún lugar a dudas, es ADO MD, o ADO con extensiones multidimensionales, si se utiliza el nombre largo. ADO MD se puede considerar como “el ODBC de las bases de datos multidimensionales” en el sentido de que está tan generalizado entre las bases multidimensionales como ODBC en las relacionales. O, si aún no llega al mismo nivel de generalización, algún día lo hará.
  • 5. Con este tipo de conexión, y mediante la utilización de expresiones MDX, es posible obtener datos de un cubo desde múltiples lenguajes de programación. Por ejemplo se puede utilizar en Visual Basic o en los lenguajes .NET. ¿Cómo se pueden escribir y probar las expresiones MDX? A falta de una herramienta más avanzada para ello, como la que aparecerá en SQL Server 2005, el único modo de probar las expresiones MDX es utilizando una aplicación de ejemplo a la que se accede desde Analysis Manager. Dicha aplicación de ejemplo se encuentra dentro del menú SQL Server, en el grupo de Analysis Services. Al abrir el programa hay que introducir los datos para realizar la conexión: Se debe proporcionar el nombre del servidor, donde puede especificarse su nombre de red, y el proveedor, que será MSOLAP para conectarse a Analysis Services. La seguridad de Analysis Services va integrada con la de Windows y, por defecto, el Administrador de Windows puede acceder a los cubos sin ningún tipo de limitación. La aplicación tiene una interfaz básica, pero más que suficiente para realizar pruebas. Consta de un cuadro de texto donde se escribirá la consulta, un explorador de cubos que permite examinar los miembros y niveles de las dimensiones, una lista de los elementos de la sintaxis MDX y una rejilla que se crea al ejecutar las consultas para mostrar sus resultados:
  • 6. Los nombres de los niveles de las dimensiones y de los miembros se pueden arrastrar directamente desde el explorador al cuadro de texto como ayuda para escribir las consultas. ¿Cómo se escribe una consulta MDX básica? A través de unos pocos ejemplos se va a dar una visión global del aspecto de las consultas MDX más básicas. Para ejecutar las consultas puede utilizarse la aplicación de ejemplo mencionada arriba, conectándose a la base de datos de ejemplo Foodmart 2000. La sintaxis básica es: SELECT <especificación de eje> on columns, <especificación de eje> on rows FROM <especificación de cubo> WHERE <especificación Slicer (rebanador)> En vez de entrar de lleno en ella es mejor partir de ejemplos más sencillos, como el siguiente: SELECT FROM Sales Ya que no se han especificado ejes, esta consulta únicamente devuelve una celda, correspondiente a los datos acumulados del cubo completo. Más precisamente, las dimensiones tienen un miembro por defecto, que es el que toman cuando no se especifican en la consulta MDX. Normalmente este es el miembro “todos”, por lo que esta consulta devuelve el resultado global de todos los datos del cubo. Es decir, para cada dimensión, al no haberse especificado nada, se elige el miembro “todos” que engloba a toda la jerarquía de la dimensión. La oveja negra, es la dimensión de medidas, Measures, para la que no existe un miembro “todos”, sino que
  • 7. hay una medida por defecto, especificada al crear el cubo, elegida entre todas las medidas existentes. El valor de la celda se corresponde a la medida Unit Sales. Para especificar un rebanador, basta con escribir el nombre de un miembro concreto de una dimensión tras el WHERE. La consulta anterior, por tanto, sería totalmente equivalente a: SELECT FROM Sales WHERE [Measures].[Unit Sales] En la consulta puede especificarse el número de ejes que se desee, aunque debe respetarse que el primer eje sea el de columnas, el segundo el de filas, el tercero el de páginas, etc. En este caso, y en la mayoría de los casos, la aplicación sólo soporta un máximo de dos ejes. Eso es natural, si se recuerda lo que se comentaba sobre los ejes y rebanadores al principio de este artículo. Una consulta que especifica un eje tiene este aspecto: SELECT {[Product].[All Products].[Drink].[Beverages], [Product].[All Products].[Drink].[Dairy], [Product].[All Products].[Food].[Eggs], [Product].[All Products].[Food].[Meat]} on columns FROM Sales Como es aprecia, la especificación de un eje consiste en definir los miembros de la dimensión que se aparecerán en el eje. Este es el resultado: Naturalmente existen medios para no tener que especificar uno a uno todos los miembros, como la función Members, que devuelve la lista de todos los miembros de un nivel de una dimensión: SELECT {[Product].[Product Department].Members} on columns FROM Sales El resultado es ahora mucho más largo, ya que muestra todos los departamentos de producto existentes en el cubo. Se puede introducir un segundo eje, como el nivel de ingresos de los compradores: SELECT {[Product].[Product Department].Members} on columns, {[Yearly Income].[Yearly Income].Members} on rows FROM Sales Siendo el resultado de la consulta, aunque no se muestre completo, este:
  • 8. El girar el cubo es tan sencillo como cambiar las dimensiones mostradas en cada eje: SELECT {[Yearly Income].[Yearly Income].Members} on columns, {[Product].[Product Department].Members} on rows FROM Sales WHERE [Measures].[Unit Sales] En este caso el resultado, (igualmente incompleto) queda así: Se comentó más arriba que las medidas pueden tratarse como si fueran una dimensión más del cubo. Arriba, en la segunda consulta de ejemplo, ya se vio como se podía utilizar la dimensión Measures como rebanador. Aquí se muestra una consulta que utiliza la dimensión Measures para definir un eje: SELECT {[Measures].[MeasuresLevel].Members} on columns, {[Product].[Product Department].Members} on rows FROM Sales Siendo este el resultado:
  • 9. Para terminar, este es un ejemplo de una expresión que contiene varios rebanadores, y que muestra una información muy concreta del cubo original: SELECT {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine], [Product].[All Products].[Drink].[Beverages].[Carbonated Beverages], [Product].[All Products].[Drink].[Beverages].[Pure Juice Beverages]} on columns, {[Promotion Media].[All Media].[TV]} on rows FROM Sales WHERE ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q2], [Marital Status].[All Marital Status].[M], [Measures].[Profit]) Esta consulta devuelve los beneficios (Profit) de las ventas de cerveza y vino, bebidas gaseosas y zumos, en California (CA), en el segundo trimestre del 97 (Q2), para los casados (M), mostrando las cifras para las promociones de TV y Radio. Se puede apreciar que hay celdas, filas y columnas vacías. Las filas o columnas completamente vacías pueden eliminarse del resultado anteponiendo las palabras claves NON EMPTY a la especificación del eje correspondiente: SELECT NON EMPTY {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine], [Product].[All Products].[Drink].[Beverages].[Carbonated Beverages], [Product].[All Products].[Drink].[Beverages].[Pure Juice Beverages]}
  • 10. on columns, NON EMPTY {[Promotion Media].[All Media].[TV]} on rows FROM Sales WHERE ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q2], [Marital Status].[All Marital Status].[M], [Measures].[Profit]) Y el resultado de la consulta pasa a ser este orto: Sólo se ha mostrado la sintaxis más básica de MDX. Este lenguaje de consulta es, como puede imaginarse, mucho más potente. En el siguiente apartado se comentan más posibilidades ofrecidas por MDX. ¿Qué más puede hacerse con MDX? El lenguaje MDX permite hacer consultas muy avanzadas, obteniendo información que no está directamente disponible en las dimensiones del cubo. Por poner algunos ejemplos: • Pueden combinarse varias dimensiones en solo eje, haciendo que una dimensión subdivida a otra. Esto también es algo muy habitual en los clientes OLAP. • Pueden realizarse consultas con miembros y celdas calculadas: esto permite calcular una nueva medida a partir de otras medidas existentes en un cubo, o crear un nuevo miembro que englobe la dimensión de varios miembros existentes. • Es posible crear consultas que ordenen y filtren el cubo basándose en los valores de las celdas (medidas), en vez de basarlo en los nombres de los miembros de las dimensiones. Entre otras cosas esto permite realizar análisis ABC, o de Pareto, u 80/20, como se prefiera llamarlo, sobre los miembros de una dimensión. • Se pueden realizar agregaciones de datos (sumas, medias, máximos, etc.) del mismo modo que en SQL. • Entre las agregaciones, un caso algo especial son los recuentos y, especialmente, los recuentos distintivos, que respondan a preguntas como cuantos clientes han comprado un producto determinado en un rango de fechas dado, o cuantos clientes han comprado dos productos concretos en otro rango de fechas determinado. Algunas de estas consultas no son tan fáciles de realizar como podría pensarse y requieren un conocimiento y una experiencia grande en MDX, del mismo modo que sucede con las consultas SQL complejas. Aún más, hay determinadas consultas MDX capaces de proporcionar información que aparentemente no existe en el cubo. Solo una gran dosis de experiencia permite conocer las posibilidades reales de este lenguaje. ¿Cómo seguir avanzando? Quizás usted se encuentre involucrado ahora, o vaya a estarlo en algún momento del futuro próximo, en un proyecto en el que necesite realizar este tipo de consultas… incluso puede que su proyecto consista en la implantación de un Data Warehouse completo o en la creación de los cubos. Si es así, puede contar con los Servicios Profesionales de Danysoft para recibir la formación adecuada, o realizar la consultoría necesaria, para llevar su proyecto a buen puerto.
  • 11. Para más información. Si desea hacernos un comentario sobre este artículo, contáctenos en attcliente@danysoft.com o en el 902 123146.