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.
Realizado esto, 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).
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).
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 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.
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.
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.
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.
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.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.