Your SlideShare is downloading. ×
Consulrtas md
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Consulrtas md

97
views

Published on

una descripcion de alfo

una descripcion de alfo

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
97
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Expresiones MDX en Analysis Services.Analysis ServicesJorge Bustos | j.bustos@danysoft.comEn este artículo se introducen las bases para entender el lenguajede consulta MDX, diseñado para realizar consultas sobre cubosOLAP en general, y en Analysis Services en particular. Se explicanlos conceptos básicos y se ofrecen algunas muestras con la basede 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 MDXEn estos tiempos en que Business Intelligence se está convirtiendo en uno de los temas más en boga dentrode las Tecnologías de la Información, merece la pena hablar de un lenguaje cuya popularidad irá ganandoterreno. 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 unconjunto 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 elresultado 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 uncubo es, en cierta manera, filtrar los datos que se quieren visualizar del mismo. (El “en cierta manera” esporque 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 deuna 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 siguienteimagen muestra el cubo rebanado:El rebanado consiste en elegir un miembro concreto de una dimensión para visualizar sólo los datoscorrespondientes 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 enel cubo.
  • 3. La última operación que se mencionaba arriba era “cortarlo en dados”. Cortar el cubo en dados suponemostrar sólo los datos correspondientes a miembros concretos elegidos en cada dimensión. Esta operaciónpuede 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 dosdimensiones 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 detrocear el cubo original, que comprendería las bebidas, el segundo trimestre, y todas las provincias. Pero eldado de la figura además está rebanado, de modo que sólo se toma la provincia de Zaragoza y, más que undado, 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 ayudade Analysis Services. Y “hacer dados”, es la traducción literal de dice. Ambas expresiones, las tomemos eninglés o en su traducción al castellano, son muy visuales, y representan muy bien lo que le sucede al cubooriginal.Aunque en rigor no es lo mismo, muchas veces al rebanado se le denomina paginación. En realidad lapaginación correspondería al tercer eje de las expresiones MDX, que no se suele utilizar nunca, dado que noes posible visualizar más de dos ejes. Así que la tercera y siguientes dimensiones nunca suelen ir en los ejesde la consulta, sino en los rebanadores.En el ejemplo utilizado, el cubo sólo dispone de tres dimensiones. Naturalmente, en los cubos que seexplotan habitualmente suele haber más de tres dimensiones. La elección de un cubo de tres dimensiones seha hecho intencionadamente para simplificar el ejemplo, y permitir que siga siendo muy visual, dado que notenemos la capacidad de visualizar más de tres dimensiones mediante dibujos. Hacer ejemplos de más de tresdimensiones obligaría entrar en terrenos demasiado abstractos. Por tanto, aunque el ejemplo haya sido sobre3 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 cubosy de sus celdas, y de qué celdas se muestran y de cómo se muestran. Incluso se ha hablado de que, en dichasceldas, hay datos. Sin embargo nada más se ha dicho sobre los datos de las celdas. A continuación se explicaque datos hay en ellas.
  • 4. A los datos existentes en cada celda de los cubos se les denomina medidas. En el cubo empleado para losejemplos la medida podría ser el número de unidades vendidas, o el costo de fabricación de los productosvendidos, o la cifra neta de ventas, o el beneficio neto de las ventas. Es más, el cubo podría tener todas estasmedidas definidas. Sin embargo sólo es posible ver un dato en cada celda en cada momento. Es decir, hayque 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 AnalysisServices.¿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 doscosas 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ónque siempre se va a llamar Measures, cuyos miembros son los nombres de las diferentes medidas definidasen el cubo.¿Para qué se utilizan las consultas MDX?Afortunadamente para los usuarios finales, el conocimiento de las consultas MDX no es necesario para poderrealizar la serie de manipulaciones básicas que se han ido mencionando en los apartados anteriores. Cualquierherramienta cliente de OLAP permite visualizar el cubo, girarlo, hacerlo dados, rebanarlo, e incluso realizarotra 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 deotra 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 lacreació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 otramanera, 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, inclusocuando 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 escribirla expresión MDX a mano. Este es el caso, por ejemplo, de Reporting Services. Cuando se desean mostrar losdatos de un cubo en un informe realizado con esta herramienta, es necesario escribir la consulta que se deseavisualizar. 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 entrelos servidores y clientes de determinados fabricantes de productos OLAP, el estándar de facto, sin ningúnlugar 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 deque está tan generalizado entre las bases multidimensionales como ODBC en las relacionales. O, si aún nollega 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 uncubo desde múltiples lenguajes de programación. Por ejemplo se puede utilizar en Visual Basic o en loslenguajes .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 únicomodo de probar las expresiones MDX es utilizando una aplicación de ejemplo a la que se accede desdeAnalysis Manager.Dicha aplicación de ejemplo se encuentra dentro del menú SQL Server, en el grupo de Analysis Services. Alabrir 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 deWindows 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 detexto donde se escribirá la consulta, un explorador de cubos que permite examinar los miembros y niveles delas dimensiones, una lista de los elementos de la sintaxis MDX y una rejilla que se crea al ejecutar lasconsultas para mostrar sus resultados:
  • 6. Los nombres de los niveles de las dimensiones y de los miembros se pueden arrastrar directamente desde elexplorador 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 labase 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 SalesYa que no se han especificado ejes, esta consulta únicamente devuelve una celda, correspondiente a los datosacumulados del cubo completo. Más precisamente, las dimensiones tienen un miembro por defecto, que es elque toman cuando no se especifican en la consulta MDX. Normalmente este es el miembro “todos”, por loque esta consulta devuelve el resultado global de todos los datos del cubo. Es decir, para cada dimensión, alno 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 valorde 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 elWHERE. 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 ejesea el de columnas, el segundo el de filas, el tercero el de páginas, etc. En este caso, y en la mayoría de loscasos, la aplicación sólo soporta un máximo de dos ejes. Eso es natural, si se recuerda lo que se comentabasobre 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 SalesComo es aprecia, la especificación de un eje consiste en definir los miembros de la dimensión que seaparecerá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ónMembers, que devuelve la lista de todos los miembros de un nivel de una dimensión: SELECT {[Product].[Product Department].Members} on columns FROM SalesEl resultado es ahora mucho más largo, ya que muestra todos los departamentos de producto existentes en elcubo.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 SalesSiendo 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 SalesSiendo este el resultado:
  • 9. Para terminar, este es un ejemplo de una expresión que contiene varios rebanadores, y que muestra unainformació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, enCalifornia (CA), en el segundo trimestre del 97 (Q2), para los casados (M), mostrando las cifras para laspromociones de TV y Radio.Se puede apreciar que hay celdas, filas y columnas vacías. Las filas o columnas completamente vacíaspueden eliminarse del resultado anteponiendo las palabras claves NON EMPTY a la especificación del ejecorrespondiente: 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á directamentedisponible 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 yuna 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 elcubo. 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 unproyecto en el que necesite realizar este tipo de consultas… incluso puede que su proyecto consista en laimplantación de un Data Warehouse completo o en la creación de los cubos. Si es así, puede contar con losServicios 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 enattcliente@danysoft.com o en el 902 123146.