Continuando con la serie “Análisis de datos”, en esta entrega les comentare brevemente sobre diversos tópicos referentes a los conceptos básicos del lenguaje MDX.
CONCEPTO GENERAL
Primero que todo debemos tener en cuenta que una base de datos multidimensional en MS SQL Server Analysis Services puede contener uno o varios cubos en su interior.
Un cubo es un objeto que es diseñado y usado por usuarios que analisan datos. Cada cubo puede contener al menos dos Dimensiones (una de las cuales es una dimensión llamada Medidas), pero típicamente contendran mas de dos dimensiones.
En el siguiente gráfico, podemos apreciar el contenido de la estructura de un cubo en la base de datos de ejemplo Adventure Works.
A su vez, ustedes pueden descargar e instalar esta base de datos de ejemplo y sus juguetes decorativos en el siguiente enlace: Adventure Works for SQL Server 2012.
MEDIDAS Y GRUPOS DE MEDIDAS
El objeto “Medidas” dentro de un cubo, es una dimensión de cubo especial que representan un conjunto de medidas. Estas son entidades cualitativas que se utilizan para el análisis.
Cada Medida es parte de una entidad llamada “Grupo de Medida”. Los Grupos de Medidas son colecciones de medidas relacionadas, y cada Medida solo puede ser parte de un único grupo de medida. Los grupos de medidas son principalmente utilizados para fines de navegación, así facilitando su lectura desde las herramientas clientes.
Los grupos de medidas, no se utilizan en las consultas MDX al consultar medidas. Sin embargo, se pueden utilizar en ciertas funciones MDX.
JERARQUÍAS Y NIVELES DE JERARQUÍAS
En el ejemplo de Adventure Works, se puede apreciar que las dimensiones tienen una o mas jerarquías, y cada jerarquía contiene uno o mas niveles.
El gráfico descriptivo que se muestra a continuación, muestra una simplificación de un cubo con tres (3) jerarquías:
- Calendario (Calendar)
- Linea de Productos (Product Line)
- Paises (Country)
Como podemos apreciar, la jerarquía Calendario de la dimensión Tiempo consta de cinco (5) niveles:
- Año
- Semestre
- Trimestre
- Mes
- Día
mientras que las jerarquías Linea de Productos y Paises son jerarquías de atributos con solo dos niveles:
- Todos (All)
y según el escenario
- Linea de Producto
- Paises
respectivamente.
MIEMBROS
Cada Jerarquía contiene uno o más elementos que se conocen como “Miembros”, y cada miembro corresponde a una o más ocurrencias del valor de referencia en la tabla de dimensiones subyacente.
En el gráfico a continuación, les muestros los miembros de las jerarquías en modo de desarrollo de las dimensiones Clientes, Empleados y Organización de la base de datos de ejemplo Adventure Works.
Pueden obeservar que para la dimensión “Clientes”, se encuentra la jerarquía homónima, habitando en la misma los ítems Ciudad (City), Paises (Country) los cules forman parte (miembros) de la jerarquía Geografia. La de “Empleados” de igual forma que la anterior pero identificamos los ítems Departamento (Departament Name) y Genero (Gender), miembros de esta jerarquía en esta dimensión. Y la dimensión Organización, que no posee según el ejemplo Jerarquías pero si contiene miembros que según su contexto, imparte información de análisis de acuerdo a los requerimientos de negocio que se le plantee, consultandose en cualquier lugar del cubo en este caso.
En MDX, cada Miembro especifico de una Jerarquía, es identificado por un nombre único. A su vez, se puede acceder a un miembro de una dimensión con su nombre, el de la jerarquía y el nombre del nivel (ítems) o la ruta de la clave (key) como por ejemplo el miembro [T1 CY 2013] dela jerarquía Calendario representado de la siguiente manera:
- [Tiempo].[Calendario].[Trimestre].[T1 CY 2013]
Hay que tener en cuenta, que se debe utilizar los corchetes cada vez que tenga un nombre que contiene un espacio, un número o palabra reservada MDX. De lo contrario, se podra omitir dichos corchetes. En la expresión anterior, el nombre de la dimensión Tiempo (Date en inglés) es una palabra reservada MDX, por lo cual DEBE estar encerrada entre corchetes.
Segurencia: Aunque los corchetes son opcionales, es una buena práctica utilizarlos.
Los tres (3) ejemplos siguientes, son validos para el miembro [T1 CY 2013]:
- [Tiempo].[Calendario].[T1 CY 2013]
- [Tiempo].[Calendario].[CY 2013].[H1 CY 2013].[T1 CY 2013]
- [Tiempo].[Calendario].[Trimestre].&[2013]&[1]
En la primera, el miembro esta representado por el siguiente formato: [Dimension].[Jerarquia].[Miembro]. La idea de esta acción al escribirlo de esta forma, es buscar que hayan conflicto cuando dos de sus miembros posean igual nombre. Lo anterior se traduciria coloquialmente de la siguiente forma: Si el Trimestre 1 de cada año se denomina T1, no se podria utilizar este formato, que se necesita para calificar con el nombre del nivel en la expresión MDX. Utilizando este formato, siempre se recuperara T1 para el primer año de la jerarquía, lo ven.
En el segundo formato, se puede observar la ruta de navegación para el miembro que vera a su vez, todos los demás miembros en dicha ruta subsecuentamente.
El formato final que utiliza la ruta clave, por así decirlo, en el que las claves de los miembros se representando como [Miembros], estando estos mismos precedido por el signo ampersand (&) utilizando el siguiente esquema para acceder a un miembro:
Cabe destacar que esta es la forma como particularmente yo lo utilizo. Los otros formatos que he enunciado en el presente post, se les denomina “Nombre unico” (UniqueName en inglés) de un miembro de la dimensión especifica y se incluye unicamente solo como referencia.
Una recomendación que les imparto al respecto es que puedes recuperar y utilizar el nombre único, que el mismo motor genera cuando es consultado un miembro especifico, vale.
Hasta aquí les expongo el presente post, en la próxima entrega le culminare los tópicos faltantes que son
-
Celdas (Cells)
-
Tuplas (Tuples)
-
Conjuntos de Datos (Sets)
Nos pillamos en la próxima entrega, .
Debe estar conectado para enviar un comentario.