Serie “Análisis de datos”: Conceptos Generales de MDX (Parte 2).


Dando continuidad a la serie “Analisis de datos”, en esta entrega, culminare los últimos tópicos a tratar, referentes a los conceptos básicos del lenguaje MDX como lo son:

  • Celdas (Cells)
  • Tuplas (Tuples)
  • Conjunto de datos (Sets)

CELDAS

El siguiente ejemplo en el gráfico No. 1, podemos observar tres (3) caras de un cubo. La cara que se encuentre de frente, se encuentra dividido en 16 cuadrados, y cada cuadrado tiene un número. Supongamos que el número dentro de cada cuadrado es una medida (Como por ejemplo en el mismo “Internet Sales Amount”). Si vemos las caras visibles restantes del este cubo, se puede ver que cada cuadro que se analiza en dicha cara frontal es en realidad un cubo pequeño, cierto.

Gráfico No. 1

El “Cubito” de la esquina superior derecha podemos observar que contiene el número 1134, este mismo número se representa en los otros lados también.

El proposito mio en este enfasis es demostrarles que este cubo más pequeño se conoce como “Celda”. Las Celdas contienen los valores de los datos de todas Las Medidas del cubo. Si el valor de datos para una medida dentro de una celda no se encuentra disponible, el valor de dicha medida correspondiente es ‘Nulo’.

Ahora, el número de celdas dentro de un cubo depende del número de jerarquías dentro de cada Dimensión y el número de Miembros en cada Jerarquía, lo ven.

Hagamos una análogia, la similitud a un espacio de coordenadas tridimensional, donde cada punto esta representado por un valor de coordenada ‘X’, ‘Y’ y ‘Z’, cada Celda dentro de un cubo esta representada por los miembros de dimensión. En el siguiente gráfico, se pueden apreciar tres (3) dimensiones:

  • Productos (Product)
  • Clientes (Customer)
  • Tiempo (Date)

Grafico 2

Gráfico No. 2

Supongamos que cada una de estas Dimensiones tienen exactamente una Jerarquía, por tanto, nosotros podemos ver que la Línea de Productos cuenta con cuatro (4) miembros, Tiempo “Calendario” tiene cuatro (4) miembros también (considerando explicitamente Trimestres), y los Clientes (Paises) cuenta con seis (6) miembros. Por lo tanto, el número de celdas es igual a 4 * 4 * 6 = 96 celdas.

Supongamos que deseamos recuperar los datos que muestra el área sombreada en el cubo. El valor de la cantidad de ventas  en esta celda es de 966. Esta celda se encuentra en la intersección de Producto = Montañera, Tiempo = Trimestre 2, y el Cliente (Países) = Australia.

Para obtener estos datos según este ejemplo, la consulta MDX debe identificar de forma única la Celda que contiene el valor 966.

SELECT Measures.[Internet Sales Amount] ON COLUMNS

FROM [Adventure Works]

WHERE ( [Date].[Calendar].[Calendar Quarter].&[2011]&[2], [Product].[Product Line].[Mountain], [Customer].[Country].[Australia] )

Como se puede apreciar en la anterior consulta, se seleccionan el valor de las medidas Measures.[Internet Sales Amount] del cubo de la base de datos ‘Adventure Works’ basado en una condición particular que figure en la consulta de la clausula WHERE, la cual identifica unicamente la celda a tratar.

TUPLAS

Una expresión MDX que identifica unicamente a una celda o una sección de un cubo se denomina “Tupla”.

Una tupla es representado por un Miembro de cada Dimensión, separados por una coma y encerrados entre paréntesis. A su vez, no necesariamente tiene que contener explícitamente los miembros de todas las dimensiones, cosa importante de comprender.

A continuación, les presento algunos ejemplos de tuplas basadas en la base de datos OLAP Adventure Works:

  • ([Cliente].[Pais].[Australia])
  • ([Tiempo].[Calendario].[2013].[H1 CY 2013].[Q1 CY 2013], [Cliente].[Pais].[Australia])
  • ([Tiempo].[Calendario].[2013].[H1 CY 2013].[Q1 CY 2013], [Producto].[Linea de Producto].[Montañera], [Cliente].[Pais].[Australia])

Como pueden apreciar en las anteriores tuplas, la 1 y la 2, no contienen miembros de todas las dimensiones del cubo. Sin embargo, ellas representan secciones del cubo.

Ahora, una sección del cubo representada por una tupla, se le denomina “Slice”, lo cual no es otra cosa, que un subconjunto de ‘N’ matriz multidimensional que corresponde a un valor único para uno o más miembros de las dimensiones y no en el subconjunto como tal.

Una Tupla representada por un solo Miembro se llama “Tupla Simple” y no necesita ser encerrado entre paréntesis. Por ejemplo,

  • ([Cliente].[Pais].[Australia])

es una tupla simple y puede ser referido como

  • [Cliente].[PaIs].[Australia]

o simplemente

  • Cliente.Pais.Australia,

lo ven.

Ahora, cuando hay más de una dimensión en una tupla, estas sin embargo, deben ser encerrados entre paréntesis. Por tanto, cuando se hace referencia a la tupla

  • ([Cliente].[Pais].[Australia]),

realmente se refiere a la celda número 16 que corresponde al país de Australia según Gráfico No. 2 mostrado anteriormente. Por lo tanto, cuando se recuperan los datos bajo dominio por así decirlo de las celdas a las que apuntan esta tupla, se esta recuperando la cantidad de ventas de Internet ([Internet Sales Amount]) de todos los clientes en Australia según nuestro ejemplo, lo ven. El valor para la tupla [Cliente].[Pais].[Australia] es un agregado de las celdas englobadas en la cara frontal del cubo.

La consulta MDX para recuperar los datos representados por este tupla es:

SELECT Measures.[Internet Sales Amount] ON COLUMNS
FROM [Adventure Works]
WHERE ([Customer].[Country].[Australia])

Dando como resultado para esta consulta MDX según nuestro ejemplo: $9,061,000.58.

Importante comprender que no importa el orden de los miembros que se utilizan para representar una tupla, puesto que una tupla identifica una celda, no pudiendo contener a más de un miembro de cada dimensión según nuestro caso de ejemplo.

CONJUNTOS DE DATOS (SETS)

Un conjunto de Tuplas forma un nuevo objeto llamado un Conjunto de datos (Sets). Esta colección de tuplas se define utilizando exactamente el mismo conjunto de las dimensiones, tanto en el tipo y número. A su vez, estos Conjuntos de datos (Sets) se utilizan con frecuencia en las consultas y expresiones MDX.

Importante que comprendamos lo siguiente: Un conjunto de datos se especifica explicitamente bajo caracteres de llave ({ NombreObjeto }). Los Miembros de los Conjuntos de datos se separan por comas.

Los siguientes ejemplos ilustran conjuntos gratamente los conjuntos de datos:

  • Ejemplo 1: Las Tuplas (Clientes.Pais.Australia) y (Clientes.Pais.Canada) se resuelven exactamente en la misma jerarquía Clientes.País. Una colección de estas dos (2) tuplas es un conjunto válido y se especifica como: {(Clientes.Pais.Australia), (Clientes.Pais.Canada)}, lo ven. Ahora otro ejemplo.
  • Ejemplo 2: Cada una de las siguientes tuplas tienen tres (3) dimensiones: Tiempo, Productos y Clientes:

1.- ([Tiempo].[Calendario].[2012].[H1 CY 2012].[Q1 CY 20012, [Productos].[Linea de Producto].[Montañera], [Clientes].[Pais].[Australia]),
2.- ([Productos].[Linea de Producto].[Montañera], [Clientes].[Pais].[Australia], ([Tiempo].[Calendario].[2012].[H1 CY 2012].[Q1 CY 2012])
3.- ([Clientes].[Pais].[Australia], [Tiempo].[Calendario].[2012].[H1 CY 2012].[Q1 CY 2012], [Productos].[Linea de Producto].[Montañera])

Los miembros de la jerarquía [Tiempo].[Calendario] de los tres (3) tuplas anteriores son diferentes; por lo tanto, estas tuplas se refieren a diferentes celdas.

Teniendo en cuenta que de acuerdo con la definición de lo que es un conjunto, una colección de estas tuplas es un conjunto válido y se muestra aquí:

{ ([Tiempo].[Calendario].[2012].[H1 CY 2012].[Q1 CY 2012], [Productos].[Linea de Productos].[Montañera], [Clientes].[Pais].[Australia]), ([Productos].[Linea de Productos].[Montañera], [Clientes].[Pais].[Australia],
([Tiempo].[Calendario].[2010].[H1 CY 2010].[Q1 CY
2010]),([Clientes].[Pais].[Australia], [Tiempo].[Calendario].[2011].[H1 CY
2011].[Q1 CY 2011], [Productos].[Linea de Productos].[Montañera] )}

Por tanto, habiendo expuesto lo anterior, se entendera que un conjunto puede contener cero, uno, o más tuplas, cierto. Un conjunto con cero tuplas se conoce como un conjunto vacío. Un conjunto vacío se representa de la siguiente forma:

{ }

Un conjunto puede contener tuplas duplicadas. Un ejemplo de un conjunto con tales caracteristicas es:

{Clientes.Pais.Australia, Clientes.Pais.Canada, Clientes.Pais.Australia}

Como pueden observar, este grupo contiene dos (2) instancias de la tupla Clientes.Pais.Australia.

Para terminar el presente artículo, considero que debemos tener en cuenta algunos puntos importantes a la hora de entender el tema acerca de tuplas y conjuntos:

  1. Un miembro de una dimensión (Por ejemplo: ([Tiempo].[Calendario].[2011].[H1 CY 2011].[Q1 CY 2011]) de por sí mismo forma una tupla y un conjunto. Por lo tanto, se puede utilizar como tal en consultas MDX.
  2. Si hay una tupla especificada por una sola jerarquía, no necesitaremos los paréntesis para especificarlo como un conjunto. Esta tupla puede ser utilizado directamente en las consultas MDX, lo ven.
  3. Cuando hay una única tupla especificada en una consulta, nosotros no necesitaremos llaves para indicar que se debe tratar como un conjunto. Ya que cuando se ejecuta dicha consulta, la tupla se convierte implícitamente en un conjunto.

En general, es una buena práctica el usar el paréntesis y las llaves mientras escribimos consultas MDX, ya que con esto nos aseguramos que las tuplas y los conjuntos especificados en nuestras consultas MDX están exactas.

Hasta aquí el presente temario referente al Lenguaje de Programación Analítico MDX.

Espero que les aproveche en la compresión básica del mismo.

Nos pillamos en una próxima, Winking smile.

Un comentario en “Serie “Análisis de datos”: Conceptos Generales de MDX (Parte 2).

  1. Pingback: Serie “Análisis de datos”: Conceptos Generales de MDX (Parte 2) | MVPs de LATAM

Los comentarios están cerrados.