You are on page 1of 17

Cubos de datos en SQL Server 2008 Analysis Services

Resulta un hecho innegable que en los ltimos tiempos, el volumen de datos que las
organizaciones deben manejar ha aumentado desmesuradamente. Analizar tal cantidad de datos,
con el objetivo de tomar decisiones estratgicas se ha convertido en un autntico problema. En el
presente artculo realizaremos una introduccin a los cubos de datos en SQL Server 2008 Analysis
Services, una potente herramienta con la que podemos transformar ingentes cantidades de datos
en informacin de utilidad.
La masificacin de datos en los sistemas de informacin de una compaa, sin la adecuada
organizacin ni estructuracin, puede acarrear efectos negativos tales como lentitud en el anlisis
de su estado, o lo que es peor, la toma de decisiones estratgicas inadecuadas, ya que el hecho de
disponer de millones de registros repartidos en mltiples orgenes de datos heterogneos (bases
de datos SQL Server, Access, archivos de texto plano, Excel, etc.), no tiene porque ser en todos los
casos sinnimo de un sistema que proporcione informacin de calidad.
Para solventar este tipo de problemas, en SQL Server contamos, desde hace ya algunas versiones,
con los Servicios de Anlisis (SQL Server Analysis Services o SSAS) o herramientas de Inteligencia
de Negocio (Business Intelligence o BI), cuyo exponente principal, el cubo de datos, permite
generar informacin para analizar el estado de la empresa a partir del conjunto de sus fuentes de
datos.
Aspectos conceptuales
Desde una perspectiva conceptual, un cubo de datos es una pieza ms en el engranaje de un
sistema de informacin denominadoalmacn de datos (data warehouse). El cubo est dotado de
una maquinaria interna que le permite procesar elevados volmenes de datos en un periodo
relativamente corto de tiempo, y cuyo objetivo es siempre la obtencin de un resultado numrico
(importes de ventas, gastos, cantidad de productos vendidos, etc.). Estos resultados pueden
cambiar en funcin de uno o varios filtros que apliquemos sobre el cubo. El tiempo de respuesta
es mnimo gracias a que el motor de procesamiento del cubo realiza un clculo previo de las
posibles combinaciones de resultados que el usuario puede solicitar. A los diferentes resultados
numricos obtenidos se les denomina medidas, mientras que los elementos utilizados para
organizar/filtrar la informacin reciben el nombre dedimensiones.
Representado grficamente, un cubo de datos se mostrara como la forma geomtrica de la cual
toma su nombre, particionado horizontal y verticalmente en una serie de divisiones que dan lugar
a mltiples celdas o casillas, las cuales identifican cada uno de los posibles resultados de las
medidas, obtenidos por la interseccin en cada celda de las dimensiones que conforman el cubo.
La siguiente figura muestra dicha representacin grfica de un cubo, con informacin de ventas
por productos, empleados y monedas. En los lados del cubo se sitan las dimensiones, cuyo cruce
produce los resultados numricos en las celdas.

Observando la figura anterior, el lector puede pensar que el nmero de dimensiones en un cubo
est limitado a las que podemos representar a travs de dicha forma geomtrica. Nada ms lejos
de la realidad, ya que un cubo puede soportar una elevada cantidad de dimensiones, que
permiten cubrir sobradamente los requisitos de la informacin a obtener.
Elementos principales en un almacn de datos
Como hemos mencionado anteriormente, un cubo de datos es una de las piezas de una
arquitectura ms compleja: el almacn de datos, en cuyo proceso de creacin estn involucrados
diversos componentes, que sern los encargados de tomar el dato original en bruto y pulirlo hasta
convertirlo en informacin lista para su anlisis. A continuacin vemos un diagrama con las fases
de este proceso de transformacin.

Descrito este proceso a grandes rasgos, en primer lugar se realiza una operacin de extraccin,
transformacin y carga (Extract, Transform & Load o ETL) desde las fuentes de datos origen,
situadas en el rea operacional, a una base de datos que se encuentra en el rea de integracin,
utilizando para ello paquetes de los Servicios de Integracin (SQL Server Integration Services o
SSIS), los cuales realizarn tambin tareas de depuracin de datos.
A continuacin pasaramos a la fase de construccin del cubo, que desarrollaremos utilizando las
herramientas de los servicios de anlisis (SSAS). Finalmente, llegaremos a la fase de acceso a los
cubos por parte de los usuarios finales, para lo que existen diversos productos tales como
Reporting Services (SSRS), Excel, etc.
Elementos fsicos. Tablas de hechos y dimensiones
A nivel fsico, para construir un cubo de datos necesitamos una base de datos que contenga una
tabla denominada tabla de hechos, cuya estructura estar formada por una serie de campos,
denominados campos de medida, a partir de los cuales obtendremos los resultados numricos del
cubo; y por otro lado, un conjunto de campos, denominados campos de dimensin, que
utilizaremos para unir con las tablas de dimensiones, a fin de poder obtener resultados filtrados
por las diversas dimensiones de que conste el cubo.
El otro pilar fundamental para la creacin de un cubo lo componen las tablas de dimensiones. Para
cada dimensin o categora de consulta/filtro que incorporemos a nuestro cubo necesitaremos
una tabla, que uniremos con la tabla de hechos por un campo clave. Esta tabla de dimensiones
actuar como catlogo de valores, tambin denominados atributos, que usaremos de forma
independiente o combinados con otras dimensiones, para obtener resultados con un mayor grado
de precisin.
Desarrollando un cubo de datos
Una vez explicadas las nociones bsicas necesarias, entramos en la parte prctica del artculo,
donde desarrollaremos nuestro propio cubo de datos. Centraremos todos nuestros esfuerzos
exclusivamente en la creacin del cubo, sin abordar aqu las operaciones de extraccin,
transformacin y carga, que seran realizadas mediante paquetes SSIS, ya que estos ltimos son
aspectos que quedan fuera del mbito de este artculo, quedando pendientes para una futura
entrega.
En primer lugar, desde el men de Windows iniciaremos SQL Server Business Intelligence
Development Studio, cuyo acceso directo se encuentra en el grupo de programas Microsoft SQL
Server 2008 R2. Se trata de una versin especial de Visual Studio preparada para desarrollar
proyectos de BI, en cuyo dilogo inicial seleccionaremos como tipo de proyecto Analysis Services
Project, al que daremos el nombre CuboDatosAdvWorks.
A continuacin, haciendo clic derecho en el nodo Data Sources del Explorador de Soluciones,
seleccionaremos la opcin New Data Source, que abrir el asistente para crear la fuente de datos
del cubo, y que en nuestro caso ser la base de datos de pruebaAdventureWorksDW2008, cuya
estructura ya se encuentra preparada para ser utilizada en el diseo de cubos de datos.
Dejaremos las opciones por defecto en el asistente hasta llegar al paso correspondiente a la
conexin contra la fuente de datos, donde seleccionaremos AdventureWorksDW2008. Al llegar al
paso final de este asistente veremos un resumen de la fuente de datos que hemos creado.

Nuestro siguiente paso consistir en crear una vista de la fuente de datos, que nos permitir,
como su nombre indica, definir una visualizacin personalizada sobre la base de datos, incluyendo
aquellas tablas que necesitemos para crear el cubo.
Lo que en este cubo de ejemplo vamos a medir es el importe de las ventas que los distribuidores
de la compaa AdventureWorks han facturado, pudiendo consultar/filtrar los resultados por el
tipo de moneda en que se ha realizado la venta, y el rea geogrfica a la que se ha enviado el
pedido. Para ello utilizaremos la tabla FactResellerSales como tabla de hechos, siendo
DimCurrency y DimSalesTerritory las tablas de dimensin.
Haciendo clic derecho en el nodo Data Source Views del Explorador de Soluciones
seleccionaremos la opcin New Data Source View, que abrir un asistente en cuyo primer paso
elegiremos la fuente de datos recin creada, y en el segundo las tablas que acabamos de
mencionar.

Finalizado este asistente aparecer su ventana de diseo, en la que vemos un diagrama de las
tablas seleccionadas, con las relaciones existentes entre las mismas.

Creacin de dimensiones. Dimensin bsica
El siguiente paso consistir en crear la dimensin que nos permitir consultar/filtrar la informacin
del cubo por el tipo de moneda con el que se realiz el pago del pedido. Haciendo clic derecho en
el nodo Dimensions del Explorador de Soluciones seleccionaremos la opcin New Dimension,
inicindose el consabido asistente, cuyo primer paso, Select Creation Method, dejaremos con la
opcin predeterminada Use an existing table. Al entrar en el paso Specify Source Information, tres
listas desplegables nos permitirn configurar la informacin a obtener para la dimensin:
con Main table elegiremos la tabla que utilizaremos en la dimensin: DimCurrency; con Key
columns indicaremos la clave primaria; y finalmente, con Name column seleccionaremos el campo
CurrencyName, que identificar el atributo a visualizar.


En el paso Select Dimension Attributes, el asistente nos ofrecer Currency Key como atributo de la
dimensin, el cual utilizaremos, pero cambiando su nombre a Currency. Un atributo es un campo,
normal o calculado, perteneciente a la tabla de dimensin, que se mostrar como una etiqueta en
cualquier lugar en el que la dimensin participe como parte de una consulta contra el cubo de
datos.

Al llegar al ltimo paso daremos el nombre Currency a la dimensin y finalizaremos el asistente,
mostrndose el diseador de dimensiones con la estructura que acabamos de crear. Observando
las propiedades del atributo Currency, las ms importantes son Name, que contiene el nombre
que aparecer en las consultas contra el cubo; KeyColumns, que contiene el campo clave de la
tabla que se relacionar con la tabla de hechos; y NameColumn, que contiene el campo de la tabla
que mostrar el valor del atributo.

En el caso de que necesitemos aadir ms atributos a la dimensin, simplemente tendremos que
arrastrar y soltar los campos desde la tabla del panel Data Source View hasta el panel Attributes
de este diseador.
Una vez creados todos los atributos procesaremos la dimensin haciendo clic en el botn Process
de la barra de herramientas del diseador, o mediante el men de Visual Studio Build | Process.
Completado el proceso de la dimensin, haremos clic en la pestaa Browser del diseador, donde
podremos examinar cmo ha quedado construida.


Creacin de dimensiones. Dimensin jerrquica
Adems de las dimensiones de un nico nivel, como la que acabamos de ver en el apartado
anterior, es posible crear dimensiones que agrupen los datos en varios niveles, lo que
proporcionar una mayor capacidad de desagregacin sobre la informacin del cubo cuando ste
sea consultado a travs de una dimensin de este tipo. A este elemento de una dimensin se le
denomina jerarqua.
Pongamos como ejemplo la tabla DimSalesTerritory, incluida en el Data Source View de nuestro
proyecto de ejemplo. En la misma podemos ver que la combinacin de los campos
SalesTerritoryGroup, SalesTerritoryCountry y SalesTerritoryRegion permite establecer varios
niveles de agrupamiento para los datos.


Supongamos que necesitamos crear una dimensin basada en esta tabla que permita, partiendo
del campo SalesTerritoryGroup, un efecto similar de "despliege" jerrquico por niveles.
Para ello, crearemos en primer lugar la dimensin utilizando el asistente en la forma explicada en
el anterior apartado. El atributo seleccionado por defecto por el asistente ser el correspondiente
al campo SalesTerritoryKey, clave primaria de la tabla.
Una vez situados en el diseador de dimensiones, arrastraremos desde la tabla del panel Data
Source View los campos SalesTerritoryGroup, SalesTerritoryCountry y SalesTerritoryRegion, y los
soltaremos en el panel Attributes de este mismo diseador.
A continuacin arrastraremos el atributo Sales Territory Group hasta el panel Hierarchies, lo cual
crear una nueva jerarqua a la que cambiaremos el nombre predeterminado por Sales Territory.
Tambin depositaremos en esta jerarqua los atributos Sales Territory Country y Sales Territory
Region, observando que junto al nombre de la jerarqua aparece un icono de advertencia que nos
informa de que las relaciones entre los atributos de la jerarqua no estn adecuadamente creadas,
lo que puede afectar negativamente al proceso de la dimensin.

Para solucionar este inconveniente haremos clic en la pestaa Attribute Relationships, donde
veremos las relaciones entre los atributos que automticamente ha creado el diseador.

Estas relaciones, sin embargo, no son vlidas para nuestros propsitos, por lo que
seleccionaremos las flechas del diagrama que las representan y las eliminaremos. Para crear las
nuevas relaciones arrastraremos desde el atributo origen hasta el destino, hasta dejarlas tal y
como apreciamos en la siguiente figura.


Antes de procesar la dimensin volveremos a la pestaa Dimension Structure para comprobar que
la advertencia ha desaparecido. Por otro lado seleccionaremos todos los atributos del panel
Attributes, asignando el valor False en su propiedad AttributeHierarchyVisible, con lo que
conseguiremos que los atributos independientes no se muestren, ya que lo que nos interesa en
este caso es explorar solamente la jerarqua. A continuacin vemos el resultado de esta
dimensin, con todos los elementos de la jerarqua expandidos.


Creacin del cubo
Llegamos a la fase final en el desarrollo de nuestro proyecto de ejemplo: la construccin del cubo
de datos. Empezaremos haciendo clic derecho en el nodo Cubes del Explorador de Soluciones, y
seleccionando la opcin Add Cube, lo que abrir el asistente de creacin, en el que dejaremos sus
valores predeterminados hasta llegar al paso Select Measure Group Tables, que como su nombre
indica, nos pide seleccionar la tabla que contendr los campos que usaremos como medidas para
el cubo, es decir, la tabla de hechos, que en este caso ser FactResellerSales.


Haciendo clic en Next entraremos en el paso Select Measures, donde tendremos que seleccionar
los campos que actuarn como medidas del cubo. El objetivo de este cubo consiste en averiguar el
importe de las ventas realizadas por los distribuidores, por lo tanto, seleccionaremos solamente el
campo SalesAmount.


El siguiente paso nos solicita la seleccin de las dimensiones que van a formar parte del cubo.
Automticamente se han detectado las dimensiones creadas por nosotros con anterioridad, las
cuales ya se ofrecen seleccionadas por defecto.


A continuacin, el asistente realiza una bsqueda en la tabla de hechos, por si algn campo
pudiera ser susceptible de ser tambin tratado como una dimensin. Dado que no necesitamos
esta caracterstica, desmarcaremos la seleccin de la tabla de hechos como fuente de origen para
la creacin de dimensiones.


Y llegamos al paso final, donde daremos al cubo el nombre de VentasDistribuidores, finalizando as
el asistente.


Como resultado obtendremos la pantalla correspondiente al diseador de cubos, que muestra
diversos elementos de importancia, tales como el panel de dimensiones, diagrama de tablas,
medidas (Measures), etc.


Es precisamente en el panel de medidas donde aparece la medida que hemos seleccionado en el
asistente, pero a la cual cambiaremos su nombre por Importe Ventas desde la ventana de
propiedades. En esta misma ventana podemos observar el nombre, la funcin de agregado que se
usa para calcular la medida, el campo de la tabla utilizado, cadena de formato, etc.


Para que la medida aparezca correctamente formateada, adems de asignar la cadena de formato
a su propiedad FormatString, en las propiedades del cubo tenemos que asignar el valor Spanish
(Spain) a la propiedad Language.
Finalmente, antes de poder consultar el cubo, al igual que hicimos con las dimensiones, debemos
procesarlo haciendo clic en el botn Process, que abrir el cuadro de dilogo de procesamiento
del cubo, en el que haremos clic en su botn Run.

Una vez que el cubo ha sido procesado, podemos consultar su contenido haciendo clic en la
pestaa Browser. En el panel Measure Group expandiremos el nodo Measures hasta llegar a la
medida Importe Ventas, que arrastraremos hasta la zona central del visualizador. A continuacin
arrastraremos la dimensin SalesTerritory hasta el margen izquierdo del visualizador. Podemos
hacer clic derecho sobre esta dimensin, seleccionando la opcin Expand Items, lo que producir
un despliegue de los elementos de la dimensin. Para terminar arrastraremos la dimensin
Currency hasta el margen superior. Como resultado obtendremos una cuadrcula de datos en la
que cada celda mostrar el valor de la medida para la interseccin de las dimensiones situadas en
las columnas y filas del visualizador de datos.

Conclusiones
En el presente artculo hemos realizado una introduccin al desarrollo de cubos de datos con SQL
Server 2008 Analysis Services, un componente de la familia SQL Server destinado a proporcionar
soluciones de inteligencia de negocio con las que explotar el potencial de anlisis que reside en los
datos de las organizaciones. Las posibilidades y potencia de esta herramienta son enormes, y
confiamos en que este artculo anime al lector a llevarlas a la prctica.

You might also like