GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Dimensiones Degeneradas de Kimball en Analysis Services (SSAS)


El concepto de Dimensión Degenerada (Degenerate Dimension) de Kimball corresponde al caso en el que la propia Tabla de Hechos actúa también como Dimensión, por incorporar no sólo Medidas, sino también algún Atributo de interés para el negocio. En este caso, no es necesario crear una Tabla de Dimensión adicional, pudiendo utilizar la propia Tabla de Hechos. El presente artículo describe paso a paso como crear una Dimensión Degenerada en un Cubo de Analysis Services 2014.

En ocasiones, las propias Tablas de Hechos incluyen Atributos que podemos necesitar como Dimensiones en nuestros Cubos, unas dimensiones un poco particulares, por su gran cantidad de Miembros y por no necesitar de su propia Tabla de Dimensión. Son las conocidas Dimensiones Degeneradas (Degenerate Dimensions) de Kimball.

Un ejemplo típico, podría ser un Cubo de Facturación, en el que deseamos incluir el número de Factura como Dimensión. En este caso, la Tabla de Hechos de Facturas, además de las Medidas necesarias, incluye el número de Factura, por lo que no necesitaremos una Tabla de Dimensión adicional, y además, nos encontraremos con una Dimensión con una gran cantidad de miembros. Ese es el concepto de Dimensión Degenerada de Kimball, visto en un caso típico y real.

En nuestro caso de ejemplo, vamos a partir de un Cubo de Analysis Services 2014 (SSAS) creado desde la Base de Datos de ejemplo de AdventureWorksDW2012, que explota la Tabla de Hechos de Ventas por Internet (FactInternetSales).

Antes de comenzar, vamos a crear una Columna Calculada (Named Column) sobre la Tabla de Hechos (FactInternetSales) en el Data Source View (DSV). La clave de esta tabla, es una clave compuesta (formada por dos campos, el Número de Pedido y la Línea de Pedido), por lo que vamos a crear un campo que utilizaremos como descripción (NameColumn) de la Clave en la Dimensión que vamos a crear (esto es requisito en las tablas con claves compuestas: es necesario establecer la Propiedad NameColumn). Ya explicamos cómo crear una Columna Calculada (Named Column) en el anterior artículo Data Source Views: Named Calculations y Named Queries.

Antes de comenzar, vamos a crear una Columna Calculada (Named Column) sobre la Tabla de Hechos (FactInternetSales)

Realizado esto, vamos a crear una nueva Dimensión, utilizando la opción New Dimension del Solution Explorer.

Vamos a crear una nueva Dimensión, utilizando la opción New Dimension del Solution Explorer

En el asistente de creación de la nueva Dimensión, en el diálogo Select Creation Method, seleccionaremos la opción Use an existing table, ya que deseamos utilizar una tabla existente de nuestro Data Source View (DSV).

En el diálogo Select Creation Method, seleccionaremos la opción Use an existing table, ya que deseamos utilizar una tabla existente de nuestro Data Source View (DSV)

Seguidamente, seleccionaremos el Data Source View (DSV) que deseemos, así como la Tabla que deseamos utilizar para alimentar nuestra Dimensión, en nuestro caso la propia Tabla de Hechos (FactInternetSales). El asistente detecta la clave de dicha tabla, y al comprobar que se trata de una Clave Compuesta por dos campos, nos obliga a seleccionar la columna que deseamos utilizar como Name Column (en nuestro caso, la Columna Calculada Order Number que acabamos de crear).

Seleccionaremos el Data Source View (DSV), la Tabla que deseamos utilizar, y la columna que deseamos con NameColumn

En el diálogo Select Related Tables, deseleccionaremos todas las tablas, ya que tan sólo necesitamos la tabla que seleccionamos en la pantalla anterior.

En el diálogo Select Related Tables, deseleccionaremos todas las tablas

En el diálogo Select Dimension Attributes, dejaremos seleccionado sólo el Atributo Sales Order Number, que es el único que deseamos utilizar.

En el diálogo Select Dimension Attributes, dejaremos seleccionado sólo el Atributo Sales Order Number, que es el único que deseamos utilizar

Realizado todo esto, especificaremos el nombre que deseemos para nuestra nueva Dimensión, y finalizaremos el asistente.

Si editamos la nueva Dimensión, y vemos las Propiedades de su único Atributo (Sales Order Number), podremos ver que se trata de una Clave Compuesta y que ya tiene configurada la Propiedad NameColumn, tal y como indicamos en el asistente de creación.

Si vemos las Propiedades de su único Atributo (Sales Order Number), podremos ver que se trata de una Clave Compuesta y que ya tiene configurada la Propiedad NameColumn

La nueva Dimensión ya está creada. Sin embargo, si editamos nuestro Cubo, podemos ver que aún no ha sido añadida al mismo, por lo que necesitamos alterar el diseño de nuestro Cubo para incluir nuestra nueva Dimensión. Para ello, utilizaremos el botón de Dimension Usage.

Necesitamos alterar el diseño de nuestro Cubo para incluir nuestra nueva Dimensión. Para ello, utilizaremos el botón de Dimension Usage

En la pantalla Dimension Usage, podemos ver y configurar cómo se cruza cada Dimensión con cada Tabla de Hechos. En nuestro caso, se trata de cruces de tipo Regular, ya que por ahora es un sencillo Cubo en Estrella (una única Tabla de Hechos, y varias Dimensiones, cada una formada por una única Tabla). Vamos a añadir la nueva Dimensión, para lo cual, haremos click en el botón Add Cube Dimension.

Vamos a añadir la nueva Dimensión, para lo cual, haremos click en el botón Add Cube Dimension

En el Diálogo Add Cube Dimension, seleccionaremos la nueva Dimensión que acabamos de crear (Dim Sales Order).

En el Diálogo Add Cube Dimension, seleccionaremos la nueva Dimensión que acabamos de crear (Dim Sales Order).

Realizado esto, nuestro Cubo de Analysis Services ya tendrá incluida la nueva Dimensión. Podemos observar que en la pantalla de Dimension Usage aparece con un icono distinto al resto de Dimensiones, ya que se trata de una Dimensión Degenerada, y el cruce entre esta Dimensión y la Tabla de Hechos es ligeramente distinto. Para comprobarlo, podemos seleccionar el cruce entre la Dimensión y la Tabla de Hechos, y hacer click en el botón de los puntos suspensivos.

Realizado esto, nuestro Cubo de Analysis Services ya tendrá incluida la nueva Dimensión. Podemos observar que en la pantalla de Dimension Usage aparece con un icono distinto al resto de Dimensiones, ya que se trata de una Dimensión Degenerada

Se mostrará el diálogo Define Relationship, en el cual se indica claramente que el tipo de relación o cruce entre esta Dimensión y la Tabla de Hechos es Fact.

Se mostrará el diálogo Define Relationship, en el cual se indica claramente que el tipo de relación o cruce entre esta Dimensión y la Tabla de Hechos es Fact

Deberemos procesar nuestro Cubo y Dimensiones para que todos nuestros cambios tomen efecto, tras lo cual, podremos examinar nuestra nueva Dimensión, y por supuesto nuestro Cubo.

Deberemos procesar nuestro Cubo y Dimensiones para que todos nuestros cambios tomen efecto, tras lo cual, podremos examinar nuestra nueva Dimensión

Poco más por hoy. Como siempre, confío que la lectura resulte de interés.

 


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.