Guia 03-Columnas Derivadas
Guia 03-Columnas Derivadas
Guia 03-Columnas Derivadas
GUA No. 3
DESARROLLO DE BACK END DE INTELIGENCIA DE NEGOCIOS
Ttulo: Columnas derivadas en Integration Services
I. OBJETIVOS
Que el Estudiante aprenda:
Transformar diferentes orgenes de datos.
Utilizar las diferentes herramientas de migracin de datos.
Integrar columnas derivadas en los paquetes de migracin
II. DESARROLLO
Ejercicio 1:
Creando un SSIS Package.
Conctese a SQL Server Data Tools y cree un Nuevo proyecto con las siguientes
especificaciones:
Template: Integration Services Project
Name: ColumnasCalculadas
Location: C:\proyectos
En la solucin renombre el Package.dtsx como ColumnasCalculadas.dtsx que se
encuentra en la seccin SSIS Packages
Adicione la nueva conexin desde el explorador de soluciones, en la seccin
Connection Managers, presione clic derecho y seleccione New Connection Manager
Aparecer el asistente de conexiones, seleccione el tipo ADO.NET y presione Adicionar
2
Presione el botn new, y configure las siguientes especificaciones:
Provider: .Net Providers -> SqlClient Data Provider
Server name: <el nombre de su servidor>
Log on to the server: Use Windows Authentication
Conctese a la base de datos AdventureWorks
Presione el botn Test Connection para verificar que la conexin se realizo con xito
Presione el botn Ok
De regreso en el asistente, presione el botn Ok
Adicione un control Data Flow Task al proyecto y renombrar la propiedad name por
Promedio Productos, vaya a la seccin Data Flow de su espacio de trabajo brindando
doble clic sobre el control.
Utilizando el Control: ADO NET Source
Adicione un objeto ADO NET Source en el espacio de trabajo de Data Flow en el
proyecto y renmbrelo como ExtraerInformacion, configure las siguientes
propiedades, presionando clic derecho y la opcin Edit:
Seccin: Connecction Managers
En el espacio de conexiones, verifique que este seleccionada la conexin creada
anteriomente
En la seccin Data Access mode, seleccione SQL Command, y adicione la siguiente
consulta en el espacio reservado para ello:
SELECT ProductID,Quantity,ActualCost
FROM Production.TransactionHistoryArchive
3
Presione el botn Preview para comprobar la conexin y la consulta ingresada
Seccin: Columns
Verificar que todas las columnas externas estn mapeadas a las columnas de salida
con el mismo nombre.
Presione Ok para finalizar la edicin del control
Utilizando el Control: Derived Column
Adicione un control Derived Column en la seccin Data Flow, colquele como nombre
TotalCosto y conecte las salidas (flecha azul) de ExtraerInformacion a este nuevo
control.
Configure las propiedades de Derived Column por medio de la opcin Edit de la
siguiente manera:
o Nombre de la columna derivada: TotalCosto
o Adicionarla como una nueva columna de salida
o La expresin a utilizar es: Quantity * ActualCost
o Las dems columnas tendrn el valor por defecto
Utilizando el Control: Aggregate
Adicione un control de tipo Aggregate a su Data Flow con el nombre SumTotales y
conctelo con el control TotalCosto
Configure las propiedades del control por medio de la opcin Edit de la siguiente
manera:
Input Column Output Alias Operation
ProductID ProductID Group by
Quantity SumCantidad Sum
TotalCosto SumTotalCosto Sum
4
Utilizando el Control: Derived Column
Adicione un control Derived Column en la seccin Data Flow, colquele como nombre
PromedioCosto y conecte las salidas (flecha azul) de SumTotales a este nuevo
control.
Configure las propiedades de Derived Column por medio de la opcin Edit de la
siguiente manera:
o Nombre de la columna derivada: PromedioCosto
o Adicionarla como una nueva columna de salida
o La expresin a utilizar es: [SumTotalCosto]/[SumCantidad]
o Las dems columnas tendrn el valor por defecto
Utilizando el Control: Sort
Adicione un control Sort en la seccin Data Flow, colquele como nombre
OrdenaProducto y conecte las salidas (flecha azul) de PromedioCosto a este nuevo
control.
Configure las propiedades del control por medio de la opcin Edit de la siguiente
manera:
Input Column Output Alias Sort Type
ProductID Producto ascending
Destino de informacin
Ejecute el siguiente script para crear el destino donde se almacenara la informacin de
este paquete de migracin
CREATE DATABASE [Destino]
GO
Use [Destino]
GO
5
CREATE TABLE [dbo].[Resultado](
[Producto] [int] NOT NULL,
[SumCantidad] [decimal](19, 2) NULL,
[SumTotalcosto] [money] NULL,
[PromedioCosto] [money] NULL,
CONSTRAINT [PK_resultado] PRIMARY KEY CLUSTERED
(
[Producto] ASC
)) ON [PRIMARY]
Utilizando el Control: ADO NET Destination
Adicione un objeto ADO NET Destination en el espacio de trabajo de Data Flow en el
proyecto y renmbrelo como SalidaInformacion, configure las siguientes propiedades,
presionando clic derecho y la opcin Edit:
Seccin: Connecction Managers
En el espacio de conexiones, cree una conexin hacia la base de datos creada
anteriormente (Destino)
Seleccione la tabla Resultado
En la seccin de Mappings, verifique que las columnas estn generadas
adecuadamente con las salidas de cada campo.
Ejecute el paquete de integracin y verifique que la informacin migrada se encuentre
en la base de datos destino
6
III. ANALISIS DE RESULTADOS
Modifique el ejercicio 1, adicionando el nombre de producto a la tabla de Resultado y
lo pueda incluir en el paquete de migracin
Modifique el ejercicio 1 de manera que se pueda adicionar el mximo y el mnimo
costo de productos
Realice un paquete de integracin utilizando Columnas derivadas y agrupadas
determinar los montos ingresados de rdenes de compras por cada rubro (total sin
cargos, fletes, impuesto, total pactado ) de todas las rdenes de compra por cada
empleado, la consulta deber retornar los datos en base a las columnas solicitadas:
Cdigo del empleado
Nombre del empleado
Subtotal sin impuestos
Impuestos
Fletes
Total pactado
Utilice de insumo la siguiente consulta:
SELECT
POH.EmployeeID 'CODIGO DE EMPLEADO',
(SELECT RTRIM(FirstName) + ' ' +
LTRIM(LastName) FROM Person.Person PC
WHERE PC.BusinessEntityID in
( SELECT BusinessEntityID
FROM HumanResources.Employee HE
WHERE POH.EmployeeID = HE.BusinessEntityID )
) EMPLEADO,
(POH.SubTotal) 'TOTAL SIN IMPUESTOS',
(POH.TaxAmt) 'IMPUESTOS',
(POH.Freight) 'FLETES'
FROM Purchasing.PurchaseOrderHeader POH
7
El resultado obtenido en la nueva tabla debe ser similar a la siguiente consulta:
SELECT
POH.EmployeeID 'CODIGO DE EMPLEADO',
( SELECT RTRIM(FirstName) + ' ' +
LTRIM(LastName) FROM Person.person PC
WHERE PC.BusinessEntityID in
( SELECT BusinessEntityID
FROM HumanResources.Employee HE
WHERE POH.EmployeeID = HE.BusinessEntityID )
) EMPLEADO,
sum(POH.SubTotal) 'TOTAL SIN IMPUESTOS',
sum(POH.TaxAmt) 'IMPUESTOS',
sum(POH.Freight) 'FLETES',
sum(POH.TotalDue) 'TOTAL PACTADO'
FROM Purchasing.PurchaseOrderHeader POH
GROUP BY POH.EmployeeID