0% encontró este documento útil (0 votos)
7 vistas42 páginas

Primer ETL con SSIS 865

El documento detalla un tutorial práctico para realizar un proceso ETL utilizando SQL Server Integration Services (SSIS). Se describe la creación de bases de datos de staging y datamart, así como la definición y carga de tablas de dimensiones y hechos, incluyendo la configuración de flujos de datos y tareas de limpieza. Además, se mencionan las relaciones entre las tablas y se presentan gráficos para visualizar los cambios realizados.

Cargado por

Multimedia Web
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas42 páginas

Primer ETL con SSIS 865

El documento detalla un tutorial práctico para realizar un proceso ETL utilizando SQL Server Integration Services (SSIS). Se describe la creación de bases de datos de staging y datamart, así como la definición y carga de tablas de dimensiones y hechos, incluyendo la configuración de flujos de datos y tareas de limpieza. Además, se mencionan las relaciones entre las tablas y se presentan gráficos para visualizar los cambios realizados.

Cargado por

Multimedia Web
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tu primer ETL con:

Tutorial Práctico y Sencillo


ARCHIVOS EN BRUTO:

CARGA A STAGING:
Se comienzo con la creación de la base de datos STAGE_SuperEPSA:
-- Verificamos si la base de datos STAGE_SuperEPSA ya existe
IF NOT EXISTS (SELECT name FROM [Link] WHERE name =
N'STAGE_SuperEPSA')
BEGIN
-- Si no existe, la creamos
CREATE DATABASE STAGE_SuperEPSA;
END;

Se utilizará los siguientes archivos para alimentar la base:


Y dentro del proyecto Integration Services Project, Proyecto_Integrador; se crearon los
siguientes SSIS Packages

Además de crear una nueva conexión dentro del Connection Managers:


Como un ejemplo de las tareas para limpieza de datos que se hará, escogeré el paquete
Extract_Categoria.
Se empezó creando una tarea de flujo de datos:

Dentro del Data Flow:


Origen de Excel:

Se tienen las siguientes columnas:


Conversión de datos:

En Destino de OLE DB:


Revisando Mappings:

Por último, una Tarea Ejecutar SQL, en el Control Flow para limpiar la tabla Categoria:
Al ejecutar Extract_Categoria.dtsx:

Extract_Cliente.dtsx:
Extract_DetallePedido.dtsx:
Extract_Distribuidor.dtsx:

Extract_Empleado.dtsx:
Extract_Pedido.dtsx:

Extract_Producto.dtsx:
Extract_Prooveedor.dtsx:

CARGA A DATAMART:
Primero se creo la base de datos DATAMART_SuperEPSA

-- Apuntando a la base maestra


USE master
GO
-- Verificando si la base de datos DATAMART_SuperEPSA ya existe
IF NOT EXISTS (SELECT name FROM [Link] WHERE name =
N'DATAMART_SuperEPSA')
-- Si no existe, la creamos
CREATE DATABASE DATAMART_SuperEPSA;
Se tomó la tabla DetalleProducto como la tabla de hechos, y las demas tablas como
dimenciones.
CREACION DE LAS TABLAS DE DIMENSION

-- Apuntando a la base de datos


USE DATAMART_SuperEPSA

CREACIÓN DE LA TABLA dm_categoria:

-- Verificando la existencia de la tabla dm_categoria


IF OBJECT_ID('dbo.dm_categoria') IS NULL
-- Si no existe, se creará la tabla.
-- Tambien se añade la clave de surco
CREATE TABLE [dbo].[dm_categoria](
[SK_IdCategoria] [nvarchar](3) NOT NULL PRIMARY KEY,
[Categoria] [nvarchar](255) NULL,
[Descripcion] [nvarchar](255) NULL
);
GO
Se le alimentará los datos de la tabla Categoria, de la base de datos STAGE_SuperEPSA, para
ello se crea el SSIS Package dim_categoria.

Se crea una Tarea de Flujo de datos

Dentro de ella se agrega un Origen de OLE DB


Se configura el origen de los datos de la base de datos STAGE_SuperEPSA y se selecciona la
tabla Categoria.

Para rastrear los cambios de la tabla Categoria se agrega una Dimensión de variacion lenta

Configurando la llave empresarial


Y el atributo fijo Categoria

Se mantiene seleccionado que falle la transformacion si se detectó cambios:

Se dehabilita la compatibilidad con miembros inferidos:

El destino es predeterminado a la del DATAMART


Ejecutando
La misma dinámica se utilizará con todos las tablas de dimensión
CREACIÓN DE LA TABLA dm_cliente:

IF OBJECT_ID('dbo.dm_cliente') IS NULL
CREATE TABLE [dbo].[dm_cliente](
[SK_IdCliente] [nvarchar](10) NOT NULL PRIMARY KEY,
[RazonSocial] [nvarchar](100) NULL,
[Contacto] [nvarchar](100) NULL,
[Cargo] [nvarchar](100) NULL,
[Direccion] [nvarchar](100) NULL,
[Ciudad] [nvarchar](50) NULL,
[Region] [nvarchar](50) NULL,
[CodPostal] [nvarchar](20) NULL,
[Pais] [nvarchar](30) NULL,
[Telefono] [nvarchar](30) NULL,
[Fax] [nvarchar](30) NULL
);
GO
CREACIÓN DE LA TABLA dm_distribuidor:

IF OBJECT_ID('dbo.dm_distribuidor') IS NULL
CREATE TABLE [dbo].[dm_distribuidor](
[SK_IdDistribuidor] [nvarchar](3) NOT NULL PRIMARY KEY,
[RazonSocial] [nvarchar](20) NULL,
[Telefono] [nvarchar](25) NULL
);
GO
CREACIÓN DE LA TABLA dm_empleado:

IF OBJECT_ID('dbo.dm_empleado') IS NULL
CREATE TABLE [dbo].[dm_empleado](
[SK_IdEmpleado] [nvarchar](3) NOT NULL PRIMARY KEY,
[Nombre] [nvarchar](50) NULL,
[Cargo] [nvarchar](50) NULL,
[Trato] [nvarchar](10) NULL,
[FechaNacimiento] [datetime] NULL,
[FechaIngreso] [datetime] NULL,
[Direccion] [nvarchar](100) NULL,
[Ciudad] [nvarchar](50) NULL,
[Region] [nvarchar](10) NULL,
[CodPostal] [nvarchar](20) NULL,
[Pais] [nvarchar](50) NULL,
[Telefono] [nvarchar](50) NULL,
[Anexo] [nvarchar](10) NULL,
[Jefe] [nvarchar](3) NULL
);
GO
CREACIÓN DE LA TABLA dm_pedido:

IF OBJECT_ID('dbo.dm_pedido') IS NULL
CREATE TABLE [dbo].[dm_pedido](
[SK_IdPedido] [numeric](18, 0)NOT NULL PRIMARY KEY,
[IdCliente] [nvarchar](10) NULL,
[IdEmpleado] [nvarchar](3) NULL,
[FechaPedido] [datetime] NULL,
[FechaEntrega] [datetime] NULL,
[FechaEnvio] [datetime] NULL,
[IdDistribuidor] [nvarchar](3) NULL,
[Importe] [float] NULL
);
GO
CREACIÓN DE LA TABLA dm_producto:

IF OBJECT_ID('dbo.dm_producto') IS NULL
CREATE TABLE [dbo].[dm_producto](
[SK_IdProducto] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[IdProducto] [nvarchar](3) NULL,
[Descripcion] [nvarchar](255) NULL,
[IdProveedor] [nvarchar](3) NULL,
[IdCategoria] [nvarchar](3) NULL,
[Presentacion] [nvarchar](100) NULL,
[Precio] [float] NULL,
[Stock] [numeric](18, 0) NULL,
[Costo] [float] NULL
);
GO
CREACIÓN DE LA TABLA dm_proveedor:

IF OBJECT_ID('dbo.dm_proveedor') IS NULL
CREATE TABLE [dbo].[dm_proveedor](
[SK_IdProveedor] [nvarchar](3) NOT NULL PRIMARY KEY,
[RazonSocial] [nvarchar](255) NULL,
[Contacto] [nvarchar](100) NULL,
[Cargo] [nvarchar](100) NULL,
[Direccion] [nvarchar](100) NULL,
[Ciudad] [nvarchar](50) NULL,
[Region] [nvarchar](50) NULL,
[CodPostal] [nvarchar](50) NULL,
[Pais] [nvarchar](50) NULL,
[Telefono] [nvarchar](50) NULL,
[Fax] [nvarchar](50) NULL
);
GO
CREACIÓN DE LA TABLA DE HECHOS FACT_DETALLEPEDIDO:

IF OBJECT_ID('FACT_DETALLEPEDIDO') IS NULL
CREATE TABLE [dbo].[FACT_DETALLEPEDIDO](
[IdDetallePedido] INT NOT NULL,
[IdPedido] INT NOT NULL,
[IdProducto] NVARCHAR(3) NOT NULL,
[IdCategoria] NVARCHAR(3) NOT NULL,
[IdCliente] NVARCHAR(10) NOT NULL,
[IdDistribuidor] NVARCHAR(3) NOT NULL,
[IdEmpleado] NVARCHAR(3) NOT NULL,
[IdProveedor] NVARCHAR(3) NOT NULL,
[Cantidad] [numeric](18, 0) NULL,
[Descuento] [float] NULL,
PRIMARY KEY(
[IdDetallePedido],
[IdPedido],
[IdProducto],
[IdCategoria],
[IdCliente],
[IdDistribuidor],
[IdEmpleado],
[IdProveedor]
)
);
GO
ALTER TABLE FACT_DETALLEPEDIDO add constraint fkCategoria
foreign key (IdCategoria) references dm_categoria (SK_IdCategoria);
GO

ALTER TABLE FACT_DETALLEPEDIDO add constraint fkCliente


foreign key (IdCliente) references dm_cliente (SK_IdCliente);
GO
ALTER TABLE FACT_DETALLEPEDIDO add constraint fkDistribuidor
foreign key (IdDistribuidor) references dm_distribuidor (SK_IdDistribuidor);
GO

ALTER TABLE FACT_DETALLEPEDIDO add constraint fkEmpleado


foreign key (IdEmpleado) references dm_empleado (SK_IdEmpleado);
GO

ALTER TABLE FACT_DETALLEPEDIDO add constraint fkProducto


foreign key (IdProducto) references dm_producto (SK_IdProducto);
GO

ALTER TABLE FACT_DETALLEPEDIDO add constraint fkProveedor


foreign key (IdProveedor) references dm_proveedor (SK_IdProveedor);
GO

Para observar mejor los cambios, se hizo un nuevo diagrama


CARGANDO DATOS
GRÁFICA 1
GRÁFICA 2
GRÁFICA 3
GRÁFICA 4
GRÁFICA 5

También podría gustarte