Вы находитесь на странице: 1из 6

1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla

http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 1/6
En esta ocasin muestro un pequeo tutorial para hacer la transformacin de una Base de datos
Transaccional a un Cubo para anlisis OLAP. Un cubo es una unidad de consulta multimensional, el
problema que resuelvo consiste en construir el cubo a partir de la base de datos transaccional de ejemplo
usando SQL Server.
El proceso consiste en tres pasos: Ubicar la tabla Fact o tabla que incluya todos los requerimientos, a
continuacin se debe modificar las relaciones de la base de datos y finalmente, cargar los datos en la nueva
relacin o Cubo OLTP.
El archivo de inicio y la solucin se pueden descargar a continuacin. Para revisar el ejemplo necesita SQL
Server 2008 estndar o mayor.
Base de datos inicial: http://www.4shared.com/file/I65ZM8Fd/OLTP_Ventas2008.html [Revisado]
Base de datos configurada en cubo
(Solucin):http://www.4shared.com/file/IMqlk2vC/OLTP_Ventas2008_Solucion.html [Revisado]
Empecemos:
Paso 1:
Observe el esquema de la base de datos transaccional. Aprecie las relaciones de la base de datos de
nombre OLTP_Ventas.
Note que la tabla candidato a FACT es Matrcula porque relaciona las dimensiones Cliente, Producto,
Empleado, etc.
Paso 2:
Pasos para crear cubos OLTP en SQL Server -
Inteligencia de Negocios
1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 2/6
Empezaremos haciendo la estructura del cubo. Borre las relaciones de las tabla.
Paso 3:
Seleccionar las tablas que harn la composicin de las dimensiones del cubo. En este ejemplo se debe
seleccionar Pedido, Cliente, Producto, Empleado y Proveedor. Luego renombre la tabla Pedido como
Fact_Pedido y para el resto de tablas usar el prefijo Dim (Dimensin) por ejemplo: Dim_Cliente,
Dim_Producto, Dim_Categora, as en lo sucesivo.
Paso 4:
Crear la tabla Dim_Tiempo. La tabla dimensin tiempo es fundamental en todo cubo y organiza el resto de
dimensiones en funcin del tiempo.
CREATE TABLE [dbo].[Dim_tiempo](
[idTiempo] [smalldatetime] NOT NULL,
[dia] [int] NULL,
[mes] [int] NULL,
[anio] [int] NULL,
1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 3/6
CONSTRAINT [PK_Dim_tiempo] PRIMARY KEY CLUSTERED
(
[idTiempo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Paso 5:
Agregue "Claves Primarias" en la tabla Fact_Pedido (que es la tabla central del cubo) con el objetivo de unir
las entidades Cliente, Producto, Empleado y Proveedor en la tabla Fact_Pedido.

En este ejemplo se agrega los siguientes campos:
IdProducto
IdProveedor
Tambin debe agregar "Campos de Mtrica" o que guardan clculos (Totales, subtotals). Para este ejemplo
agregaremos:
Cantidad (int),
Descuento (int),
Subtotal (Money)
Cambie el nombre del campo Fact_Pedido.Fecha_pedido por Fact_Pedido.IdTiempo y asocie el campo a
Dim_Tiempo.
Finalmente, Elimine campo Fact_Pedido.Fecha_entrega porque las fechas son innecesarias en esta tabla.
Ya casi tenemos el cubo.
Paso 6:
Para que el cubo se complete es necesario cargar datos a las tablas o dimensiones.
Es importante notar que los nuevos campos recin creados: IdProducto, IdProveedor, Cantidad y Subtotal
recin agregados a la tabla Fact_Pedido no tienen valores o son NULL. Note que Subtotal es un caso
especial, porque es producto del clculo de Cantidad * Precio. Ud. debe imaginar una manera prctica para
cargar datos.
En este ejemplo vamos usar una consulta SQL para completar datos que faltan en la tabla Fact_Pedido y
Dim_detalle_pedido calculando Cantidad * Precio y el resto de claves que falta asignar.
SELECT dbo.Fact_Pedido.NroPed, dbo.Dim_Producto.IdProducto, dbo.Dim_Producto.IdProveedor,
dbo.Fact_Pedido.idTiempo, dbo.Fact_Pedido.Id_Cliente,
dbo.Fact_Pedido.IdEmpleado, dbo.Dim_Detalle_pedido.Cantidad,
dbo.Dim_Detalle_pedido.Descuento,
dbo.Dim_Detalle_pedido.Cantidad * dbo.Dim_Producto.PrecioUnit AS Subtotal
FROM dbo.Fact_Pedido INNER JOIN
dbo.Dim_Detalle_pedido ON dbo.Fact_Pedido.NroPed = dbo.Dim_Detalle_pedido.NroPedido
INNER JOIN
dbo.Dim_Producto ON dbo.Dim_Detalle_pedido.IdProducto = dbo.Dim_Producto.IdProducto
1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 4/6
Guarde esta salida de la consulta en un archivo de texto. Servir a posterior para llenar la tabla Fact_Pedido:
1 3425 C002 2007-01-25 00:00:00.000 D004 D06 100 15 20,0000
2 4564 C001 2007-05-13 00:00:00.000 F006 C05 15 11 225,0000
3 2345 C001 2007-08-24 00:00:00.000 C003 A02 45 19 202,5000
3 7845 C003 2007-08-24 00:00:00.000 C003 A02 60 15 180,0000
Paso 7:
Borre los registros (filas) de la tabla Fact_Pedido. Edite Fact_Pedido quitando "Clave Primaria" de NroPed.
Registre estas nuevas columnas como Clave Primaria:
IdProducto
IdProveedor
idTiempo
Id_Cliente
IdEmpleado
La tabla debera quedar as:
Importante: Solo se debe conservar Llaves Primarias y Campos creados con objetivo de guardar resultado
de clculos en la tabla Fact_Pedido.
1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 5/6
Paso 8:
Ahora toca cargar los datos desde el archivo de texto descrito en Paso 6 sobre la tabla Fact_Pedido. La tabla
se llenar, ya no da lugar a campos nulos.
Paso 9:
Cargar los datos para la tabla Dim_Tiempo. Los datos de Dim_Tiempo son el resultado de
Fact_Pedido.IdTiempo, por tanto, usaremos esta consulta para extraer los datos:
SELECT DISTINCT idTiempo, DAY(idTiempo) AS dia, MONTH(idTiempo) AS mes, YEAR(idTiempo) AS anio
FROM dbo.Fact_Pedido
Paso 10:
Finamente (ahora si...) relacionar Fact_Pedido con el resto de tablas o dimensiones usando las relaciones.
Debera quedar as:
1/7/2014 Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 6/6
El 'cubo' est listo :D
Es hora de hacer consultas al cubo. Puedes continuar con el post Pasos para extraer informacin del cubo
OLAP en Analysis Services y SQL Server Business Intelligence Development Studio

Вам также может понравиться