Pasos Para Crear Cubos OLTP en SQL Server - Inteligencia de Negocios _ Vida Amarilla

December 4, 2017 | Author: Paredes Romero Margelius | Category: Table (Database), Microsoft Sql Server, Databases, Sql, Data Model
Share Embed Donate


Short Description

Download Pasos Para Crear Cubos OLTP en SQL Server - Inteligencia de Negocios _ Vida Amarilla...

Description

1/7/2014

Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla

Pasos para crear cubos OLTP en SQL Server Inteligencia de Negocios En esta ocasión muestro un pequeño tutorial para hacer la transformación de una Base de datos Transaccional a un Cubo para análisis 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 continuación se debe modificar las relaciones de la base de datos y finalmente, cargar los datos en la nueva relación o Cubo OLTP. El archivo de inicio y la solución se pueden descargar a continuación. Para revisar el ejemplo necesita SQL Server 2008 estándar o mayor. Base de datos inicial: http://www.4shared.com/file/I65ZM8Fd/OLTP_Ventas2008.html [Revisado] Base de datos configurada en cubo (Solución):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 Matrícula porque relaciona las dimensiones 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 en SQL Server - Inteligencia de Negocios | Vida Amarilla

Empezaremos haciendo la estructura del cubo. Borre las relaciones de las tabla.

Paso 3: Seleccionar las tablas que harán la composición 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 (Dimensión) por ejemplo: Dim_Cliente, Dim_Producto, Dim_Categoría, así en lo sucesivo.

Paso 4: Crear la tabla Dim_Tiempo. La tabla dimensión tiempo es fundamental en todo cubo y organiza el resto de dimensiones en función del tiempo. CREATE TABLE [dbo].[Dim_tiempo]( [idTiempo] [smalldatetime] 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 en SQL Server - Inteligencia de Negocios | Vida Amarilla

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 También debe agregar "Campos de Métrica" o que guardan cálculos (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 recién creados: IdProducto, IdProveedor, Cantidad y Subtotal recién agregados a la tabla Fact_Pedido no tienen valores o son NULL. Note que Subtotal es un caso especial, porque es producto del cálculo de Cantidad * Precio. Ud. debe imaginar una manera práctica 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

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

3/6

1/7/2014

Pasos para crear cubos OLTP en SQL Server - Inteligencia de Negocios | Vida Amarilla

Guarde esta salida de la consulta en un archivo de texto. Servirá a posterior para llenar la tabla Fact_Pedido: 1 2 3 3

3425 4564 2345 7845

C002 C001 C001 C003

2007-01-25 00:00:00.000 2007-05-13 00:00:00.000 2007-08-24 00:00:00.000 2007-08-24 00:00:00.000

D004 D06 100 15 20,0000 F006 C05 15 11 225,0000 C003 A02 45 19 202,5000 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 debería quedar así:

Importante: Solo se deb e conservar Llaves Primarias y Campos creados con ob jetivo de guardar resultado de cálculos en la tab la 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 en SQL Server - Inteligencia de Negocios | Vida Amarilla

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. Debería 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 en SQL Server - Inteligencia de Negocios | Vida Amarilla

El 'cubo' está listo :D Es hora de hacer consultas al cubo. Puedes continuar con el post Pasos para extraer información 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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF