Tareas 1- 4 Olap, Molap Y Rolap
Upcoming SlideShare
Loading in...5
×
 

Tareas 1- 4 Olap, Molap Y Rolap

on

  • 8,819 views

tareas de los temas de olap, molap y rolap

tareas de los temas de olap, molap y rolap

Statistics

Views

Total Views
8,819
Views on SlideShare
8,819
Embed Views
0

Actions

Likes
1
Downloads
315
Comments
2

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tareas 1- 4 Olap, Molap Y Rolap Tareas 1- 4 Olap, Molap Y Rolap Document Transcript

  • INSTITUTO TECNOLOGICO SUPERIOR DE LERDO<br />LICENCIATURA EN INFORMATICA<br />TOPICOS AVANZADOS DE BASES DE DATOS<br />UNIDAD 3<br />TAREAS 1-4<br />BRENDA CAROLINA PEREZ IBARRA<br />I.S.C. E.D. M.E. Ricardo Bustamante González<br />8 SEM 20/abril/2010<br />TAREA 1: COMO REALIZAR Y GESTIONAR CUBOS OLAP EN MICROSOFT EXCEL 2007<br />Este artículo explica cómo utilizar Excel para crear un cubo de datos a partir de un archivo de texto con valores separados por comas o tabuladores. También indica dónde obtener información sobre cómo conectarse al cubo con Data Analyzer.<br />NOTA: Los datos del archivo de texto deben estar ordenados en columnas y filas (datos tabulares). No se puede convertir un informe de tabla dinámica en un archivo de texto y obtener datos válidos. Asimismo, el archivo de texto debe contener encabezados de columna. <br />BÚSQUEDA DE DATOS DE ORIGEN Y CREACIÓN DE UN CUBO<br />Si dispone de un archivo de texto que contiene datos significativos, como un informe de ventas, utilícelo ahora con toda libertad. Si no dispone de ningún origen de datos, o si no está seguro de cómo crearlo, descargue un archivo de texto de ejemplo desde el Centro de descarga de Office. El archivo de ejemplo contiene datos geográficos y de ventas tomados de la base de datos de ejemplo Foodmart 2000. La mayoría de los datos se presentan en formato de números de identificación, por lo que no se pueden analizar, pero puede utilizarlos para seguir los pasos aquí descritos. <br />Una vez que disponga de los datos de origen, siga este procedimiento para crear un cubo con Excel: <br />Elija un origen de datos. En este caso, seleccione los archivos .txt o .csv. <br />Cree una consulta que extraiga los datos del archivo de texto. <br />Cree un cubo a partir de los datos extraídos. <br />Los siguientes pasos explican cómo llevar a cabo cada una de estas tareas. <br />PARA SELECCIONAR UN ORIGEN DE DATOS<br />En el menú Datos de Excel, elija Obtener datos externos y, a continuación, haga clic en Nueva consulta de base de datos. <br />En el cuadro de diálogo Elegir origen de datos, haga clic en la ficha Bases de datos, seleccione Nuevo origen de datos y, a continuación, haga clic en Aceptar. <br />En el cuadro de diálogo Crear nuevo origen de datos, escriba un nombre para el origen de datos en el primer cuadro de texto, seleccione el controlador de texto de Microsoft (*.txt; *.csv) de la segunda lista y, a continuación, haga clic en Conectar. <br />En el cuadro de diálogo Configuración de ODBC, desactive la casilla Usar directorio actual y haga clic en Seleccionar directorio. <br />En el cuadro de diálogo Seleccionar base de datos, busque la carpeta que contiene el archivo de ejemplo que ha descargado o su propio archivo de texto y haga clic en Aceptar. IMPORTANTE: No seleccione el archivo, sólo la carpeta. <br />Haga clic dos veces más en Aceptar para volver al cuadro de diálogo Elegir origen de datos. <br />PARA CREAR LA CONSULTA <br />En el cuadro de diálogo Elegir origen de datos, seleccione el origen de datos que ha creado siguiendo los pasos anteriores. Asegúrese de que la opción Usar el Asistente para consultas para crear o modificar consultas está activada y, a continuación, haga clic en Aceptar. <br />En el cuadro de diálogo Elegir columnas del Asistente para consultas, seleccione el archivo en el que desea buscar. Si está utilizando el archivo de texto de ejemplo, haga clic en dicho archivo y mueva todas las columnas del panel Tablas y columnas disponibles al panel Columnas en la consulta. Si está utilizando su propio archivo, mueva las columnas que desea utilizar. <br />Haga clic en Siguiente y vuelva a hacer clic en Siguiente en las dos pantallas que aparecen después. <br />En la pantalla Finalizar del Asistente para consultas, seleccione Crear un cubo OLAP a partir de esta consulta y haga clic en Finalizar. De esta manera se iniciará el Asistente para cubos OLAP, que puede utilizar para crear el cubo. <br />PARA CREAR EL CUBO <br />Haga clic en Siguiente en la pantalla de bienvenida del Asistente para cubos OLAP. <br />En el paso 1 del Asistente, seleccione sólo los campos de origen que desea utilizar como medidas. Para ello, active la casilla de la columna Campo de origen. Si está utilizando el archivo de texto de ejemplo, seleccione sólo store_sales, store_cost y unit_sales. Asegúrese de que Suma está seleccionado para todos esos campos en la columna Resumir por y, a continuación, haga clic en Siguiente. <br />En el paso 2 del Asistente, mueva los campos que desea utilizar como dimensiones desde el panel de campos de origen al panel Dimensiones. Si está utilizando el archivo de texto de ejemplo, cree la siguiente estructura de datos: <br />Haga clic en Siguiente. <br />En el paso 3 del Asistente, seleccione Guardar un archivo de cubo que contenga todos los datos del cubo. Escriba la ruta y el nombre de archivo del cubo y haga clic en Finalizar. <br />En el cuadro de diálogo Guardar como, escriba un nombre de archivo para la definición de consulta que acaba de crear y haga clic en Guardar; de esta manera, podrá volver a utilizarla más tarde. Excel guarda el archivo con la extensión .oqy y el Asistente para cubos OLAP crea el archivo de cubo. Esta operación puede requerir varios minutos. <br />USO DEL CUBO <br />Una vez que el Asistente para cubos OLAP ha creado el cubo, aparecerá la pantalla Asistente para tablas y gráficos dinámicos - paso 3 de 3. En este momento puede: <br />Utilizar la pantalla para crear un informe de tabla dinámica. Para obtener más información sobre cómo crear informes de tabla dinámica, consulte la Ayuda de Excel. <br />Conectarse al cubo con Data Analyzer. Para obtener más información sobre cómo conectarse a un cubo, consulte Connecting to Data Cubes and Creating Views (el contenido de esta página está en inglés) en el Centro de asistencia de Office. Principio del formulario<br />ACERCA DE LA CREACIÓN DE INFORMES DE EXCEL EN CUBOS OLAP<br />Puede usar las nuevas funciones y fórmulas de procesamiento analítico en línea (OLAP) de Microsoft Office Excel 2007 para crear informes altamente personalizables y modelos analíticos que se pueden actualizar automáticamente para incluir los datos profesionales de orígenes de datos externos más recientes.<br />FUNCIONES DE OLAP<br />Si usa las nuevas funciones de OLAP de Office Excel 2007, puede usar una hoja de cálculo de Office Excel 2007 como base de los informes para los datos de los cubos OLAP. Puede usar las siguientes funciones de OLAP para importar datos de Microsoft SQL Server 2005 Analysis Services directamente en las celdas de la hoja de cálculo de Office Excel 2007 para el análisis de datos no estructurado:<br />CUBEMEMBER---Envía una expresión multidimensional (MDX) a un cubo OLAP y captura un miembro o tupla.<br />CUBEVALUE--Envía una o más MDX a un cubo OLAP y captura un valor agregado.<br />CUBESET--Envía una MDX a un cubo OLAP que define un conjunto del cubo y ubica el conjunto en una celda de la hoja de cálculo.<br />CUBESETCOUNT--Devuelve el número de elementos de un conjunto.<br />CUBERANKEDMEMBER--Captura el elemento N de un conjunto.<br />CUBEMEMBERPROPERTY--Devuelve un valor de propiedad del miembro desde un cubo OLAP.<br />CUBEKPIMEMBER--Devuelve un objetivo, un valor, un estado o una tendencia de indicador clave de rendimiento (KPI) de un cubo OLAP.<br />TAREA 2: EN QUE CONSISTE, CUALES SON SUS DIFERENCIAS, SU FUNCIONAMIENTO Y LA UTILIZACION DE OLAP, MOLAP Y ROLAP.<br />EN QUE CONSISTEN<br />OLAP es el acrónimo en inglés de procesamiento analítico en línea (online analytical processing). Es una solución que suministra respuestas rápidas a consultas a una base de datos orientada a consultas (Esquema del copo de nieve y Esquema de la estrella).<br />MOLAP es el acrónimo inglés de Multidimensional Online Analytical Processing, es decir, 'procesamiento analítico multidimensional en línea'. MOLAP se diferencia significativamente en que requiere un pre procesamiento y almacenamiento de la información contenida en el cubo OLAP. MOLAP almacena estos datos en una matriz de almacenamiento multidimensional optimizado, más que en una base de datos relacional (o en un ROLAP).<br />ROLAP significa Procesamiento Analítico OnLine Relacional, es decir, se trata de sistemas y herramientas OLAP (Procesamiento Analítico OnLine) construidos sobre una base de datos relacional. Es una alternativa a la tecnología MOLAP (Multidimensional OLAP) que se construye sobre bases de datos multidimensionales.<br />CUALES SON SUS DIFERENCIAS<br />La diferencia substancial entre un ROLAP y un MOLAP es la velocidad de creación y consulta el modelo ROLAP es sencillo de crear y sencillo de consultar (Una consulta puede tardar Horas en las peores condiciones), mientras que el MOLAP es lento en la creación pues todos los cálculos se tienen que realizar en cada “recarga” de información con tiempos de carga y cálculo típicos de horas o en las peores condiciones días. El ROLAP delega la negociación entre tiempo de respuesta. Mientras, el MOLAP, suele requerir que sus bases de datos se pre compilen para conseguir un rendimiento aceptable en las consultas, incrementando, por tanto algunos de los requerimientos.<br />Y OLAP utiliza estructuras multidimensionales que contienen datos resumidos de grandes Bases de datos o Sistemas Transaccionales (OLTP). La razón de usar OLAP para las consultas es la velocidad de respuesta. Una base de datos relacional almacena entidades en tablas discretas si han sido normalizadas. Esta estructura es buena en un sistema OLTP pero para las complejas consultas multitabla es relativamente lenta. Un modelo mejor para búsquedas, aunque peor desde el punto de vista operativo, es una base de datos multidimensional.<br />Cada sistema OLAP tiene ciertos beneficios (aunque existe desacuerdo acerca de las características específicas de los beneficios entre los proveedores).<br />Algunas implementaciones MOLAP son propensas a la " explosión" de la base de datos; este fenómeno provoca la necesidad de grandes cantidades de espacio de almacenamiento para el uso de una base de datos MOLAP cuando se dan ciertas condiciones: elevado número de dimensiones, resultados pre calculados y escasos datos multidimensionales. Las técnicas habituales de atenuación de la explosión de la base de datos no son todo lo eficientes que sería deseable.<br />Por lo general MOLAP ofrece mejor rendimiento debido a la especializada indexación y a las optimizaciones de almacenamiento. MOLAP también necesita menos espacio de almacenamiento en comparación con los especializados ROLAP porque su almacenamiento especializado normalmente incluye técnicas de compresión.<br />ROLAP es generalmente más escalable. Sin embargo, el gran volumen de pre procesamiento es difícil de implementar eficientemente por lo que con frecuencia se omite; por tanto, el rendimiento de una consulta ROLAP puede verse afectado.<br />Desde la aparición de ROLAP van apareciendo nuevas versiones de bases de datos preparadas para realizar cálculos, las funciones especializadas que se pueden utilizar tienen más limitaciones.<br />OLAP engloba un conjunto de técnicas que tratan de combinar MOLAP y ROLAP de la mejor forma posible. Generalmente puede pre-procesar rápidamente, escala bien, y proporciona una buena función de apoyo.<br />SU FUNCIONAMIENTO<br />OLAP (también llamado cubo multidimensional o hipercubo). Se compone de hechos numéricos llamados medidas que se clasifican por dimensiones. El cubo de metadatos es típicamente creado a partir de un esquema en estrella o copo de nieve, esquema de las tablas en una base de datos relacional. Las medidas se obtienen de los registros de una tabla de hechos y las dimensiones se derivan de la dimensión de los cuadros.<br />La funcionalidad de los sistemas OLAP se caracteriza por ser un análisis multidimensional de datos corporativos, que soportan los análisis del usuario y unas posibilidades de navegación, seleccionando la información a obtener.<br />Normalmente este tipo de selecciones se ve reflejada en la visualización de la estructura multidimensional, en unos campos de selección que nos permitan elegir el nivel de agregación (jerarquía) de la dimensión, y/o la elección de un dato en concreto, la visualización de los atributos del sujeto, frente a una(s) dimensiones en modo tabla, pudiendo con ello realizar, entre otras las siguientes acciones:<br />Rotar (Swap): alterar las filas por columnas (permutar dos dimensiones de análisis)<br />Bajar (Down): bajar el nivel de visualización en las filas a una jerarquía inferior<br />Detallar (Drilldown): informar para una fila en concreto, de datos a un nivel inferior<br />Expandir (Expand): id. anterior sin perder la información a nivel superior para éste y el resto de los valores<br />Colapsar (Collapse): operación inversa de la anterior.<br />MOLAP usa una base de datos propietaria multidimensional, en la que la información se almacena multidimensionalmente, para ser visualizada multidimensionalmente.<br />El sistema MOLAP utiliza una arquitectura de dos niveles: La bases de datos multidimensionales y el motor analítico.<br />La base de datos multidimensional es la encargada del manejo, acceso y obtención del dato. <br />El nivel de aplicación es el responsable de la ejecución de los requerimientos OLAP. El nivel de presentación se integra con el de aplicación y proporciona un interfaz a través del cual los usuarios finales visualizan los análisis OLAP. Una arquitectura cliente/servidor permite a varios usuarios acceder a la misma base de datos multidimensional. <br />Ventajas de MOLAP<br />Consulta rápidas debido a la optimización del rendimiento de almacenamiento, la indexación multidimensional y la memoria caché.<br />Ocupa menor tamaño en disco en comparación con los datos almacenados en base de datos relacional debido a técnicas de compresión.<br />Automatización del procesamiento de los datos agregados de mayor nivel.<br />Muy compacto para conjuntos de datos de pocas dimensiones.<br />El modelo de almacenamiento en vectores/matrices proporciona una indexación natural.<br />Eficaz extracción de datos lograda gracias a la pre-estructuración de los datos agregados.<br />Desventajas de MOLAP<br />La etapa de procesamiento (carga de datos) puede ser bastante larga, sobre todo para grandes volúmenes de datos. Normalmente, esto se puede evitar con un procesamiento incremental, es decir, sólo el procesamiento de los datos que han cambiado (por lo general, los nuevos datos) en lugar de volver a procesar de todo el conjunto de datos.<br />Las herramientas MOLAP tradicionalmente tienen dificultades para consultar con modelos con dimensiones muy altas (del orden de millones de miembros).<br />El enfoque MOLAP introduce redundancia en los datos.<br />ROLAP La arquitectura ROLAP, accede a los datos almacenados en un Data Warehouse para proporcionar los análisis OLAP. La premisa de los sistemas ROLAP es que las capacidades OLAP se soportan mejor contra las bases de datos relacionales.<br />El sistema ROLAP utiliza una arquitectura de tres niveles. La base de datos relacional maneja los requerimientos de almacenamiento de datos, y el motor ROLAP proporciona la funcionalidad analítica.<br />El nivel de base de datos usa bases de datos relacionales para el manejo, acceso y obtención del dato. <br />El nivel de aplicación es el motor que ejecuta las consultas multidimensionales de los usuarios. <br />El motor ROLAP se integra con niveles de presentación, a través de los cuales los usuarios realizan los análisis OLAP. <br />Ventajas de ROLAP<br />ROLAP se considera más escalable para manejar grandes volúmenes de datos, especialmente modelos con dimensiones de gran cardinalidad (por ejemplo, con millones de miembros).<br />Hay disponible una gran variedad de herramientas de carga de datos para sistemas relacionales; además, existe la posibilidad de ajustar el código ETL(Extract, Transform, Load) a un modelo de datos particular. Con todo esto se consigue que los tiempos de carga sean generalmente mucho menores que con las cargas MOLAP automatizadas.<br />Los datos se almacenan en una base de datos relacional estándar que puede ser accedida por cualquier herramienta de generación de informes SQL (reporting). Estas herramientas no tienen que ser necesariamente de tipo OLAP.<br /> Las herramientas MOLAP tienden a sufrir un bajo rendimiento cuando consultan elementos como descripciones textuales.<br />Obviando el almacenamiento de datos del modelo multidimensional, es posible modelar datos con éxito que de otro modo no se ajustarían en un modelo dimensional estricto.<br />Desventajas de ROLAP<br />Las herramientas ROLAP no disponen de mecanismos automáticos para realizar esta tarea, lo significa que se necesita más tiempo de desarrollo de código.<br />Muchos desarrolladores de modelos dimensionales ROLAP ignoran el paso de crear tablas agregadas. En este caso el rendimiento de una consulta se ve afectado porque entonces se necesita consultar las tablas con datos más detallados. Esto puede evitarse parcialmente añadiendo tablas agregadas adicionales, sin embargo no es práctico crear tablas agregadas para todas las combinaciones posibles de dimensiones/atributos.<br />UTILIZACION EN LA INDUSTRIA<br />OLAP: Se usa en informes de negocios de ventas, márketing, informes de dirección, minería de datos y áreas similares.<br />MOLAP: El MOLAP es una solución particular, adecuada para soluciones departamentales con unos volúmenes de información y número de dimensiones más modestos.<br />ROLAP: Las herramientas ROLAP son seleccionadas generalmente por compañías con grandes volúmenes de datos (gran cardinalidad de dimensiones), debido a que a la escalabilidad superior de ROLAP, y la misma encuesta también confirma esto consistentemente. <br />Algunas compañías usan ROLAP porque quieren reutilizar las tablas de las bases de datos relacionales existentes, frecuentemente estas tablas no tendrán un diseño óptimo para uso OLAP. La flexibilidad de las herramientas ROLAP permite que funcionen, pero el rendimiento decae si no se ha realizado un diseño adecuado de las tablas. Las herramientas MOLAP en cambio forzarían a que los datos sean recargados en un diseño OLAP óptimo.<br />TAREA 3: EL LENGUAJE MDX PARA LA REALIZACION DE CONSULTAS DE CUBOS<br />Tutorial MDX<br />El objetivo de este breve tutorial es explicar los conceptos básicos del lenguaje MDX así como servir de introducción para que el lector pueda dar sus primeros pasos con un motor que utilice MDX. Se utilizará en concreto la especificación de MDX para el servidor OLAP open source de la suite de BI Pentaho.<br />ÍNDICE<br />0.- Breve introducción al análisis multidimensional y cubos OLAP<br />1.- ¿Que es MDX?<br />2.- Principales aspectos de la sintaxis de MDX<br />3.- Dimensiones de tiempo en MDX: funciones especiales<br />4.- Miembros calculados y formulas complejas.<br />0.- Breve introducción al análisis multidimensional y cubos OLAP<br />Antes de empezar a hablar de MDX debemos entender que significa el análisis multidimensional y los cubos OLAP pues el lenguaje MDX se utiliza para realizar consultas sobre estos modelos de datos.<br /> El análisis multidimensional consiste en organizar la información y los datos de una organización de forma que los elementos medibles o métricas del negocio (también llamados hechos) puedan ser cualificados utilizando las diferentes " dimensiones" o vistas del negocio.<br /> El objetivo de este modelo es permitir analizar una métrica cruzándola con diferentes puntos de vista del negocio. Pero entendámoslo mejor con un ejemplo:<br />Pongamos que tenemos un supermercado con una tarjeta de fidelización que nos permita saber quién compra que y cuando.<br />Un análisis u organización multidimensional de los datos de ventas de un supermercado nos podría permitir responder a preguntas como:<br />-Que articulo es el más vendido este mes.<br />-Que tienda ha vendido más artículos del tipo X<br />-Que edad tienen los clientes que más gastan en mi supermercado (de media)<br />Veamos el paralelismo entre estas consultas y el modelo multidimensional.<br />¿Que articulo es el más vendido este mes?<br /> En esta pregunta queremos analizar el hecho artículos vendidos y lo queremos analizar desde 2 dimensiones distintas: tiempo y familia de productos<br />¿Que supermercado ha vendido más artículos del tipo X?<br /> El hecho a contar aquí es el mismo (cantidad de artículos) pero las dimensiones son aquí las diferentes tiendas y la familia de productos<br />¿Que edad tienen los clientes que más gastan en mi supermercado (de media)?<br /> En este caso el hecho es el importe de las ventas y la dimensión son los clientes, o bien la edad de los clientes, o bien su rango de edad. Lo veremos más adelante.<br />1.- QUE ES MDX<br />MDX es un acrónimo de Multidimensional Query eXpression. Este lenguaje fue creado en 1997 por Microsoft. No es un lenguaje estándar sin embargo diferentes fabricantes de herramientas OLAP (entre ellos Mondrian) lo han adoptado como estandard de hecho.<br /> El MDX es en los sistemas OLAP el equivalente al SQL en los sistemas gestores de bases de datos relacionales. Eso significa que es el lenguaje a través del cual podemos explotar la información que reside en los motores OLAP y satisfacer las consultas analíticas de las que hemos hablado en el capítulo introductorio.<br /> Es un lenguaje de consulta más cercano al lenguaje natural que el SQL sin embargo tiene funciones y formulas que lo hacen muy potente para el análisis de datos.<br />La principal diferencia del mundo OLAP respecto al mundo relacional radica en que las estructuras dimensionales están jerarquizadas y se representan en forma de árbol y por lo tanto existen relaciones entre los diferentes miembros de las dimensiones.<br /> Este hecho hace que el lenguaje MDX disponga de funciones y atributos especiales que permiten referenciar los diferentes elementos de las dimensiones con expresiones como MIEMBROS-HIJO, MIEMBROS-PRIMO, MIEMBROS-PADRE, etc... Haciendo una analogía con los árboles genealógicos.<br /> Estas estructuras jerarquizadas son especialmente útiles para poder visualizar los datos de forma comparada a nivel temporal pero de las dimensiones temporales y sus particularidades ya hablaremos en otro capítulo.<br />2.- PRINCIPALES ASPECTOS DE LA SINTAXIS DE MDX<br />El lenguaje MDX permite realizar consultas con una sintaxis parecida al lenguaje natural.<br />Para ejemplificar las consultas y la sintaxis trabajaremos con un ejemplo de un cubo.<br />Imaginamos un cubo de ventas con las siguientes dimensiones:<br />-Dimensión temporal de las ventas con niveles de año y mes.<br />-Dimensión productos vendidos con niveles de familia de productos y productos.<br />-Dimensión de medidas con importe de las ventas y unidades vendidas<br />2.1.- Mi primera consulta<br />Si queremos obtener por ejemplo el importe de las ventas para el año 2008 para la familia de productos lácteos la consulta seria la siguiente:<br />SELECT<br />{ [Medidas].[importe ventas]}<br />on columns,<br />{ [Tiempo].[2008] }<br />on rows<br />FROM [cubo ventas]<br />WHERE ([Familia].[lacteos])<br />2.2.- Analogía con SQL<br /> Analizando la consulta de ejemplo podemos establecer una analogía con el SQL para explicar mejor la estructura del lenguaje. En primer lugar tenemos la estructura idéntica general de la consulta con las cláusulas SELECT... FROM... WHERE que en MDX se usa idénticamente al SQL especificando en el select un conjunto de elementos que queremos visualizar, en el from indicamos el cubo del que queremos sacar la información y en el where las condiciones de filtrado.<br /> Una de las particularidades del MDX es que la información la devuelve en forma tabular normalmente y debe ser procesada. Si os fijáis en la cláusula select se usa la clausula on columns. Esta cláusula sirve para separar los elementos que queremos visualizar en las filas de los que queremos en las columnas. En la consulta de ejemplo veremos el importe en las columnas y el tiempo en las filas. Los { } son para permitir listas de elementos en las selecciones y los [] encapsulan elementos de las dimensiones y niveles.<br />2.3.- Principales funciones, opciones y elementos MDX<br /> A nivel de funcionalidades y potencia a la hora de realizar consultas el MDX es potente como el SQL aunque su objetivo está orientado a temas de comparaciones, relaciones jerárquicas entre elementos, etc...<br /> Una de las funcionalidades que distinguen al MDX es el acceder a los elementos utilizando estructura de árbol. Así para un Determinado nivel de una dimensión tenemos comandos como:<br />[Familia].[lácteos].CurrentMember : Permite acceder al miembro actual<br />[Familia].[lácteos].Children : Permite acceder a los hijos de la familia de los lácteos<br />[Familia].[lácteos].prevMember: Permite acceder al miembro anterior de la dimensión<br /> Por otro lado existen diferentes funciones que permiten realizar cálculos y complementar las consultas como por ejemplo: <br />-CrossJoin(conjunto_a,conjunto_b): Obtiene el producto cartesiano de dos conjuntos de datos.<br />-BottomCount(conjunto_datos,N): Obtener un número determinado de elementos de un conjunto, empezando por abajo, opcionalmente ordenado.<br />-BottomSum(conjunto_datos,N,S): Obtener de un conjunto ordenado los N elementos cuyo total es como mínimo el especificado( S).<br />-Except(conjunto_a,conjunto_b): Obtener la diferencia entre dos conjuntos.<br />Finalmente comentar que en MDX también están implementadas muchas funciones matemáticas y estadísticas que permiten enriquecer los análisis. Encontramos entre muchas otras funciones como:<br />AVG, COUNT, VARIANCE, VARIANC <br />En y todas las funciones trigonométricas (Seno, Coseno, tangente, etc.)<br />3.- DIMENSIONES DE TIEMPO EN MDX: FUNCIONES ESPECIALES<br /> Como ya hemos comentado a lo largo de este tutorial una de las funcionalidades destacadas del lenguaje MDX son las funciones especiales de tratamiento del tiempo. En el análisis multidimensional es muy frecuente comparar los valores de las métricas con los valores de periodos anteriores. Por ejemplo comparar las ventas de junio de 2009 con las ventas de junio de 2008,2007, 2006, etc. También es muy común hacer operaciones acumuladas con periodos móviles: por ejemplo las ventas de los últimos 6 meses o desde enero hasta el mes actual, etc...<br /> Para todo ello MDX permite identificar y tratar de forma especial las dimensiones temporales, para poder aplicar las fórmulas que permiten obtener los cálculos que hemos mencionado en el párrafo anterior. A continuación nombramos algunas de las principales fórmulas relacionadas con las dimensiones temporales y su sintaxis.<br />PeriodsToDate<br />Funcionalidad: Devuelve un conjunto de miembros del mismo nivel que un miembro determinado, empezando por el primer miembro del mismo nivel y acabando con el miembro en cuestión, de acuerdo con la restricción del nivel especificado en la dimensión de tiempo.<br />Sintaxis: <Conjunto> PeriodsToDate(<Nivel>, <Miembro>)<br />Ejemplo: PeriodsToDate([Tiempo].[Mensual].[Semestre],[Tiempo].[Mensual].[Mes].[Agosto<br />2009]<br /> El siguiente ejemplo devolvería el conjunto de meses desde agosto de 2009 hasta el final del semestre es decir julio y agosto de 2009.<br /> Existen funciones especiales para simplificar el uso de PeriodsToDate en sus versiones más comunes y son las siguientes:<br />WTD(<Miembro>): Devuelve los miembros de la misma semana del miembro especificado.<br />MTD(<Miembro>): Devuelve los miembros del mismo mes del miembro especificado.<br />QTY(<Miembro>): Devuelve los miembros del mismo trimestre del miembro especificado.<br />YTD(<Miembro>): Devuelve los miembros del mismo año del miembro especificado.<br />ParallelPeriod<br />Funcionalidad: Devuelve un miembro de un periodo anterior en la misma posición relativa que el miembro especificado.<br />Sintaxis: <Miembro> ParallelPeriod(<Nivel>, <Expresión numerica>, <Miembro>)<br />Ejemplo: ParallelPeriod ([Tiempo].[Mes].[Semestre], 3,<br />[Tiempo].[Mensual].[Mes].[Junio 2009]) El siguiente ejemplo devolveria diciembre 2007 que es el equivalente al último mes del semestre retrocediendo 3 semestres en el tiempo.<br />Hay más funciones de tiempo pero con estas sólo pretendo ilustrar el concepto y la utilidad de estas funciones. Cada uno debera buscar la función que necesite para realizar sus cálculos y funcionalidades en sus cubos.<br />4.- MIEMBROS CALCULADOS Y FORMULAS COMPLEJAS.<br /> Una de las funcionalidades más potentes que ofrece el lenguaje MDX es la posibilidad de realizar cálculos complejos tanto dinámicos (en función de los datos que se están analizando en ese momento) como estáticos. Los cubos multidimensionales trabajan con medidas (del inglés measures) y con miembros calculados ( calculated members). Las medidas son las métricas de la tabla de hechos a las que se aplica una función de agregación (count,distinct count,sum,max,avg,etc...), en otras palabras son las métricas del negocio en estado puro. Los miembros calculados son tratados como métricas a la hora de explotar los cubos,sin embargo son mucho más potentes que estas.<br /> Un miembro calculado es una métrica que tiene como valor el resultado de la aplicación de una fórmula que puede utilizar todos los elementos disponibles en un cubo, así como otras funciones de MDX disponibles. Veamos un ejemplo sencillo.<br />Imaginamos que tenemos dos métricas en nuestro cubo que son:<br />[Medidas].[importe ventas] y [Medidas].[Número de artículos vendidos].<br />Podríamos obtener el precio medio de articulo utilizando un miembro calculado con la siguiente formula: [Medidas].[precio medio articulo]=[Medidas].[importe ventas] / [Medidas].[Número de artículos vendidos] Voilà!!! Este es nuestro primer miembro calculado.<br />Los miembros calculados son realmente muy potentes pues podemos utilizar expresiones condicionales para mostrar diferente información en función del nivel o las dimensiones que estamos visualizando. Un segundo ejemplo algo más complejo: <br />iif([Tiempo.mensual].CurrentMember.Level IS<br />[Tiempo.mensual].[Mes],[Measures].[promedio mensual],null)<br />En el ejemplo anterior utilizamos una función condicional de MDX llamada iif que nos permite asignar valor a un miembro calculado sólo cuando estamos en un nivel determinado de una dimension. Concretamente este miembro calculado sólo tiene valor cuando estamos en el nivel Mes de la dimensión temporal, en cualquier otro caso el valor es nulo.<br />Acabamos el capítulo con otro ejemplo algo más complejo.<br /><CalculatedMember name=" Criticidad 6" dimension=" Measures" > <formula><br />sum({ParallelPeriod([tiempo].[periodo],1, <br />[tiempo].CurrentMember).Lag(5):ParallelPeriod([tiempo].[periodo],1,<br />[tiempo].CurrentMember)},[Importe Ventas]) </formula><br /><CalculatedMemberProperty name=" FORMAT_STRING" expression=" IIf( <br />sum({ParallelPeriod([tiempo].[periodo],1,<br />[tiempo].CurrentMember).Lag(5):ParallelPeriod([tiempo].[periodo],1,<br />[tiempo].CurrentMember)},[Importe Ventas])>0,'|##,##%|arrow=up','|##,##%|arrow=down')" /><br /></CalculatedMember><br /> Aquí podemos ver un ejemplo de como se define una formula más compleja y como se da un formato especial en función del valor a esa formula.<br /> La fórmula está utilizando una función de agregación para sumar la métrica [Importe Ventas] haciendo el acumulado de los últimos 5 valores del nivel ( 5 años, 5 meses o 5 semanas) utilizando la función de tiempo ParallelPeriod con el intervalo de los últimos 5 miembros (con ayuda de la funcion Lag(5)) El formato se define en la propiedad FORMAT_STRING y consiste en una flecha verde o roja en función de si la cantidad es negativa o positiva utilizando de nuevo la función if y las propiedades de formato como arrow=up y arrow=down que son propias de la implementación de mondrian.<br />CONSULTA DE MDX BÁSICA (MDX)<br />La consulta de MDX (Expresiones multidimensionales) básica es la instrucción SELECT: la consulta utilizada con más frecuencia en MDX. Si comprende cómo una instrucción MDX SELECT debe especificar un conjunto de resultados, en qué consiste la sintaxis de la instrucción SELECT y cómo crear una consulta simple mediante la instrucción SELECT, tendrá un conocimiento sólido de cómo utilizar MDX para realizar consultas de datos multidimensionales.<br />En MDX, la instrucción SELECT especifica un conjunto de resultados que contiene un subconjunto de datos multidimensionales que se han devuelto desde un cubo. Para especificar un conjunto de resultados, una consulta MDX debe contener la siguiente información:<br />El número de ejes o conjuntos de jerarquías. Puede especificar hasta 128 ejes en una consulta de MDX.<br />Los miembros de cada dimensión que se incluyen en cada eje de la consulta de MDX. <br />El nombre del cubo que define el contexto de la consulta de MDX.<br />Los miembros de un eje segmentado en los que se segmentan los datos para los miembros de los ejes de consulta. <br />Para identificar los ejes de consulta, el cubo que establece el contexto de la consulta y el eje segmentado, la instrucción MDX SELECT utiliza las cláusulas siguientes:<br />Una cláusula SELECT que determina los ejes de consulta de una instrucción MDX SELECT. <br />Una cláusula FROM que determina el origen de datos multidimensionales que se va a usar cuando se extraigan datos para llenar el conjunto de resultados de la instrucción MDX SELECT. <br />Una cláusula WHERE que opcionalmente determina qué dimensión o miembro se utilizará como eje segmentado que limite la extracción de datos a una dimensión o un miembro específicos. <br />SINTAXIS DE LA INSTRUCCIÓN SELECT<br />En la sintaxis siguiente se muestra una instrucción SELECT básica que incluye el uso de las cláusulas SELECT, FROM y WHERE:<br /> [ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ] <br />SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]<br />FROM <SELECT subcube clause> <br />[ <SELECT slicer axis clause> ]<br />[ <SELECT cell property list clause> ]<br />La instrucción MDX SELECT admite una sintaxis opcional, como la palabra clave WITH, el uso de funciones de MDX para crear miembros mediante el cálculo para incluirlos en un eje o un eje segmentado, y la capacidad de devolver los valores de propiedades específicas de celda como parte de la consulta. <br />COMPARAR LA SINTAXIS DE LA INSTRUCCIÓN MDX SELECT CON SQL<br />El formato de la sintaxis de la instrucción MDX SELECT es similar al de la sintaxis de SQL. Sin embargo, hay varias diferencias claras: <br />La sintaxis MDX distingue conjuntos rodeando tulpas o miembros con llaves <br />Las consultas de MDX pueden tener hasta 128 ejes de consulta en la instrucción SELECT, pero sólo los 5 primeros ejes tiene alias. Puede hacer referencia a un eje mediante su posición ordinal en la consulta de MDX o mediante su alias, si el eje tiene un alias. Al igual que con una consulta de SQL, la cláusula FROM da nombre al origen de los datos de la consulta de MDX. Sin embargo, la cláusula MDX FROM está restringida a un solo cubo. Se puede recuperar información de otros cubos, utilizando la función LookupCube valor por valor.<br />La cláusula WHERE describe el eje segmentador. Si una jerarquía no se menciona como parte de la cláusula WHERE, Microsoft SQL Server Analysis Services asume que cualquier jerarquía que no esté explícitamente incluida en un eje de consulta está implícitamente incluida en el eje segmentador, y la jerarquía se filtra por sus miembros predeterminados. La cláusula WHERE puede cambiar el proceso de filtrado para la jerarquía especificada y proporcionarle un control exhaustivo de los datos incluidos.<br />EJEMPLO DE INSTRUCCIÓN SELECT<br />En el siguiente ejemplo se muestra una consulta de MDX básica que utiliza la instrucción 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.<br />SELECT<br /> { [Measures].[Sales Amount], <br /> [Measures].[Tax Amount] } ON COLUMNS,<br /> { [Date].[Fiscal].[Fiscal Year].&[2002], <br /> [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS<br />FROM [Adventure Works]<br />WHERE ( [Sales Territory].[Southwest] )<br />En este ejemplo, la consulta define la siguiente información del conjunto de resultados:<br />La cláusula SELECT establece los ejes de la consulta en los miembros Sales Amount y Tax Amount de la dimensión Measures, y los miembros 2002 y 2003 de la dimensión Date.<br />La cláusula FROM indica que el origen de datos es el cubo Adventure Works.<br />La cláusula WHERE define el eje segmentador como el miembro Southwest de la dimensión Sales Territory.<br />Observe que el ejemplo de consulta utiliza también los alias de los ejes COLUMNS y ROWS. Las posiciones ordinales para estos ejes también podrían haberse utilizado. En el siguiente ejemplo se muestra cómo podría haberse escrito la consulta de MDX para que utilizara la posición ordinal de cada eje:<br />SELECT<br /> { [Measures].[Sales Amount], <br /> [Measures].[Tax Amount] } ON 0,<br /> { [Date].[Fiscal].[Fiscal Year].&[2002], <br /> [Date].[Fiscal].[Fiscal Year].&[2003] } ON 1<br />FROM [Adventure Works]<br />WHERE ( [Sales Territory].[Southwest] )<br />TAREA 4: REALIZAR LA ESTRUCTURA O MODELO DE CUBOS QUE RELACIONE LA SIGUINTE INFORMACION:<br />UNA EMPRESA QUE VENDE X PRODUCTOS, UN PRODUCTO VENDIDO EN DETREMINADAS ZONAS, VENDEDORES QUE VENDEN DICHOS PRODUCTOS EN UN TIEMPO Y LAS GANANCIAS QUE GENERAN LAS VENTAS DE ESOS PRODUCTOS CON ESOS VENDEDORES.<br />Con MDX se pueden mostrar las propiedades con la posibilidad de utilizar la sentencia DIMENSION PROPERTIES.<br />SELECT<br />{[Measures].[Cantidad de productos vendidos]} ON COLUMNS,<br />NON EMPTY [vendedor].[vendedor categoria]. MEMBERS<br />DIMENSION PROPERTIES [vendedor].[vendedor categoria].[edad] ON ROWS<br />FROM vendedor<br />