Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios
Etiquetas Acadmico, Informtica, Programacin
La demostracin de transformacin de una Base de datos Transaccional a un Cubo para anlisis LAP !un tema de Inteligencia de negocios"# El proceso consiste en ubicar la tabla $act o tabla que inclu%a todos los requerimientos, a continuacin se debe modificar las relaciones de la base de datos % finalmente, cargar los datos en la nue&a relacin o Cubo LTP# Para la demostracin es necesario descargar la base de datos de e'emplo desde aqu( % tener instalado )*L )er&er +,,- estndar# Esta demostracin es solo un procedimiento de e'emplo, para casos reales se necesita ma%or comple'idad de operacin % criterio, por tanto el autor no es responsable del resultado del uso del mtodo % tampoco indica como .correcto. el procedimiento a demostrar# Paso 1: /escargar la base de datos de e'emplo % restaurar en )*L )er&er# Tambien puede restaurar la base de datos desde el script# bser&e el esquema de la base de datos transaccional# Aprecie las relaciones de la base de datos de nombre LTP01entas# 2ote que la tabla candidato a $ACT es 3atr(cula porque relaciona las dimensiones Cliente, Producto, Empleado, etc# Paso 2: Empie4a la construccin de la estructura del cubo# Borre las relaciones de las tablas para e&itar estorbos en las operaciones# Paso 3: )eleccionar las tablas que 5arn la composicin del cubo# En el desarrollo del e'emplo seleccionaremos Pedido, Cliente, Producto, Empleado % Pro&eedor 6enombre la tabla Pedido como $act0Pedido % para el resto de tablas usar /im0Cliente, /im0Producto, etc# Tener presente que los prefi'os .$act. % ./im. representan la .Tabla de 5ec5os. % las ./imensiones. del cubo respecti&amente# Paso 4: Crear la tabla /imensin Tiempo# La dimensin tiempo es necesaria % fundamental en la construccin del cubo porque clasifica el resto de dimensiones en funcin del tiempo# C6EATE TABLE 7dbo8#7/im0tiempo8! 7idTiempo8 7smalldatetime8 2T 29LL, 7dia8 7int8 29LL, 7mes8 7int8 29LL, 7anio8 7int8 29LL, C2)T6AI2T 7P:0/im0tiempo8 P6I3A6; :E; CL9)TE6E/ ! 7idTiempo8 A)C "<IT= !PA/0I2/E> ? $$, )TATI)TIC)026EC3P9TE ? $$, I@26E0/9P0:E; ? $$, ALL<06<0LC:) ? 2, ALL<0PA@E0LC:) ? 2" 2 7P6I3A6;8 " 2 7P6I3A6;8 Paso : AAadir las BCla&es PrimariasB en la tabla $act0Pedido a fin de unir las entidades Cliente, Producto, Empleado % Pro&eedor en la tabla $act0Pedido# Para la demostracin agregue los camposC IdProducto IdPro&eedor 2o ol&idar agregar los campos de 3trica, para la demostracin agregueC Cantidad !int", /escuento !int", )ubtotal !3one%" Cambiar el nombre del campo $act0Pedido#$ec5a0pedido por $act0Pedido#IdTiempo $inalmente, eliminar el campo $act0Pedido#$ec5a0entrega porque es un campo no necesario para esta demostracin# A5ora tenemos la estructura de cubo parcialmente terminada# Paso !: ContinDa la carga de datos# Como es e&idente, los nue&os campos IdProducto, IdPro&eedor, Cantidad % )ubtotal recientemente agregados a la tabla $act0Pedido son iguales a 29LL# Por tanto, debe 5acer el a'uste para completar estos &alores# 2ote que )ubtotal es un caso especial, porque es producto del clculo de Cantidad E Precio# 9n mtodo prctico para llenar la tabla es usar una consulta )*L que completen los datos que faltan en la tabla $act0Pedido# En la demostracin usaremos la siguiente consultaC )ELECT dbo#$act0Pedido#2roPed, dbo#/im0Producto#IdProducto, dbo#/im0Producto#IdPro&eedor, dbo#$act0Pedido#idTiempo, dbo#$act0Pedido#Id0Cliente, dbo#$act0Pedido#IdEmpleado, dbo#/im0/etalle0pedido#Cantidad, dbo#/im0/etalle0pedido#/escuento, dbo#/im0/etalle0pedido#Cantidad E dbo#/im0Producto#Precio9nit A) )ubtotal $63 dbo#$act0Pedido I22E6 FI2 dbo#/im0/etalle0pedido 2 dbo#$act0Pedido#2roPed ? dbo#/im0/etalle0pedido#2roPedido I22E6 FI2 dbo#/im0Producto 2 dbo#/im0/etalle0pedido#IdProducto ? dbo#/im0Producto#IdProducto cu%o resultado es copiado en un arc5i&o de teGtoC H IJ+K C,,+ +,,LM,HM+K ,,C,,C,,#,,, /,,J /,N H,, HK +,,,,,, + JKNJ C,,H +,,LM,KMHI ,,C,,C,,#,,, $,,N C,K HK HH ++K,,,,, I +IJK C,,H +,,LM,-M+J ,,C,,C,,#,,, C,,I A,+ JK HO +,+,K,,, I L-JK C,,I +,,LM,-M+J ,,C,,C,,#,,, C,,I A,+ N, HK H-,,,,,, Paso ": A continuacin, borrar los registros de la tabla $act0Pedido# Luego, editar la Tabla $act0Pedido quitando la Cla&e Primaria de 2roPed % asignando cla&e primaria a los camposC IdProducto IdPro&eedor idTiempo Id0Cliente IdEmpleado En algunos casos % debido a la duplicacin de registros este paso es opcional# 9na manera sencilla de lograrlo es seleccionar los campos descritos, 5acer clic derec5o % asignar BEstablecer cla&e principalB# La tabla deber(a quedar as(C Paso #: Cargar los datos desde el arc5i&o de teGto descrito en Paso N sobre la tabla $act0Pedido# La tabla se llenar, %a no 5a% lugar a campos nulos# Paso $: Cargar los datos para la tabla /im0Tiempo# Los datos de /im0Tiempo son el resultado de $act0Pedido#IdTiempo, por tanto, ser Dtil seleccionar todos los registros distintos de la tabla $act0tiempo de la siguiente maneraC )ELECT /I)TI2CT idTiempo, /A;!idTiempo" A) dia, 32T=!idTiempo" A) mes, ;EA6!idTiempo" A) anio $63 dbo#$act0Pedido Paso 1%: 6elacionar $act0Pedido con el resto de tablas o dimensiones# )i tiene problemas con los tipos de datos, cambie los campos de la tabla $act0Pedido a los tipos requeridos# Como era de esperarse, a5ora tenemos el .cubo. listo C/