pasos para crear cubos oltp en sql server - inteligencia de negocios _ vida amarilla

Upload: miguel-angel-paredes-romero

Post on 13-Oct-2015

74 views

Category:

Documents


0 download

TRANSCRIPT

  • 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 tab la 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