Академический Документы
Профессиональный Документы
Культура Документы
En esta ocasin mues tro un pequeo tut orial para hacer la t ransformacin de una Base de datos
Transa ccional a un Cubo para anlis is OLAP. Un cubo es u na unidad de cons ulta m ultimensional, el
problema que re suelvo consis te en construir el c ubo a partir de la base de dat os transacciona l de ejemplo
usando SQL Ser ver.
El proceso cons iste en tres pas os: Ubi car la tabla Fact o t abla que incluya tod os los requerimientos, a
continuacin se debe modi ficar las relaciones de la base de datos y f inalm ent e, cargar los datos en la nueva
relacin o Cubo OLTP.
El archivo de inicio y la s olucin s e pueden des cargar a continuacin. Para rev isar el ejemplo necesita SQL
Server 2008 estndar o mayor.
Empecemos:
Paso 1:
Observe el esqu ema de l a base de d atos transaccional. A precie las relaciones de la bas e de datos de
nombre OLTP_Ventas.
Note que la tabla candida to a FACT es Matrcula porque relaciona l as dim ensi ones Cliente, Producto,
Empleado, etc.
Paso 2:
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 1/6
1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla
Empezaremos haciendo l a estructura del cubo. Borre las relaciones de las tabla.
Paso 3:
Seleccionar las tabla s que harn la composicin de las dimensiones del cubo. E n este ejemplo se debe
seleccionar Pedido, C liente, Produc to, Empleado y Proveedor. Luego renom bre la tabla Pedido com o
Fact_Pedido y para el resto de t ablas us ar el prefijo Dim (Dim ensin ) por ejemplo: Dim_C liente,
Dim _Producto, Dim_C ategora, as en lo s ucesivo.
Paso 4:
Crear la tabla Dim_Tiem po. La tabla dim ensi n tiempo es fundamental en todo cubo y organiza el resto de
dimensiones en funcin del tiempo.
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 2/6
1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla
Paso 5:
Agregue "Claves Primarias " en la tabla Fact_Pedido (que es l a tabla central del cubo) con el objetivo de unir
las entidades Cliente, Product o, Empleado y Proveedor en la tabla Fact_Pedido.
Tambin debe a gregar "Campos de Mtrica" o que guardan clculos (Totales, subtotals). Para este ejem plo
agregaremos:
Cantidad (int),
Des cuento (int),
Subtotal (Money)
Cam bie el nom bre del cam po Fact_Pedido.Fecha_pedido por Fact_P edido.IdTiem po y asocie el camp o a
Dim_Tiempo.
Finalmente, Elimine cam po Fact_Pedido.Fecha_entrega porque las fechas so n innecesarias en esta tabla.
Paso 6:
Para que el cubo se complete es necesario car gar datos a las tablas o dimensiones .
Es imp ortante notar que los nuevos campos recin creados: IdProducto, IdProveedor, Cantidad y Subtot al
recin agregados a la tabla Fact_Pedido no tienen valores o so n NULL. Note que Subtot al es un caso
especial, porque es producto del clculo de Cantidad * Precio. Ud. debe im aginar una m anera prctica para
cargar datos.
En este ejem plo vamos u sar una cons ulta SQL para compl etar datos qu e faltan en la tabla Fac t_Pedido y
Dim _detalle_pedido calculando Ca ntidad * Precio y el resto de claves que falta asignar.
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 3/6
1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla
Guarde esta s alida de la cons ulta en un archivo de texto. Servir a po sterior para ll enar la tabla Fact_Pedido:
Paso 7:
Borre los registros (filas) de la tabla Fact_Pedido. Edit e Fact_Pedido quitando "Clave Prima ria" de NroPed.
Registre estas nuevas columnas como Clave Primaria:
IdProducto
IdProveedor
idTiempo
Id_Cliente
IdEmpleado
Im portante: Solo se debe conservar Llaves Primarias y Cam pos creados con objetivo de guardar resultado
de clculos en la tabla Fact_Pedido.
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 4/6
1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla
Paso 8:
Ahora toca cargar los datos desd e el archivo de texto des crito en Paso 6 s obre la tabla Fact_Pedido. La tabla
se llenar, ya no da lugar a camp os nulos .
Paso 9:
Cargar los dato s para la tabl a Dim _Tiempo. Los datos de Dim_Tiempo s on el resultado de
Fact_Pedido.IdTiempo, por tanto, usaremos esta cons ulta para extraer los datos:
SELECT DISTINCT idTiem po, DAY(idTiem po) AS dia, MONTH(idTiem po) AS mes , YEAR(idTiemp o) AS anio
FROM dbo.Fact_Pedido
Paso 10:
Finamente (ahora si.. .) relacionar Fact_Pedido con el resto de t ablas o dim ensi ones us ando las relaciones .
Debera quedar as:
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 5/6
1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla
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
http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 6/6