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

1/7/2014 Pasos para crear cubos OLTP enSQLServer - InteligenciadeNegocios | VidaAmarilla

Pasos para crear cubos OLTP en SQL Server -


Inteligencia de Negocios

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.

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 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.

CREATE TABLE [dbo].[Dim _tiem po](


[idTiem po] [sm alldatetime] NOT NULL,
[dia] [int] NULL ,
[mes ] [int] NULL,
[anio] [int] NULL,

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

CON STRAINT [PK_Dim _tiem po] PRIMARY KEY CLUSTERED


(
[idTiem po] 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 l a tabla central del cubo) con el objetivo de unir
las entidades Cliente, Product o, Empleado y Proveedor en la tabla Fact_Pedido.

En este ejemplo se agrega los s iguientes campos :


IdProducto
IdProveedor

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.

Ya casi tenem os el cubo.

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.

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.IdEmpl eado, dbo.Dim_De talle_pedido.Cantidad,
dbo.Dim_Detalle_pedido.Descuento,
dbo.Dim_D etalle_pedido.Cantidad * dbo.Dim_Producto.P recioUnit AS Subtot al
FROM dbo.Fact_Pedido INNER JOIN
dbo.Dim_D etalle_pedido ON dbo.Fact_Pedido.NroPed = dbo.Dim_D etalle_pedido.NroPedido
INNER JOIN
dbo.Dim_Producto ON dbo.Dim_De talle_pedido.IdP roducto = dbo.Dim_Producto. IdProducto

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:

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. Edit e Fact_Pedido quitando "Clave Prima ria" de NroPed.
Registre estas nuevas columnas como Clave Primaria:
IdProducto
IdProveedor
idTiempo
Id_Cliente
IdEmpleado

La tabla debera quedar as:

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

El 'cubo' est lis to :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

http://www.vidaamarilla.com/2010/02/pasos-para-hacer-cubos-en-sql-server.html 6/6

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