Scenario:
We need to extract the records from a reference table for Lookup Transformation and we are using a Stored Procedure. As Reference Table has records for multiple regions and we get Source Files for each region, we don't want to put all the records in memory if we can just get the records related to Source File Region. The Stored Procedure accepts the RegionCode as Parameter and get the related records.How can we pass the parameter value to stored procedure in Lookup Transformation that we will extract from file name in SSIS Package?
What you will learn in this video
- How to create SSIS Package from scratch
- How to Loop through files by using For-each Loop Container in SSIS Package
- How to Read the part of File Name and Save into Variable by using Expressions
- How to make use of Variable to make Lookup Query dynamic for Stored Procedure in SSIS Package
- How to filter the rows for Lookup Reference Data Set by using Variable Value in Stored Procedure in SSIS Package
Solution:
Let's create Sample Table for Reference data with some sample records and a stored Procedure that can accept RegionCode as input and return us CustomerId,CustomerName,RegionCode so we can map the CustomerName and RegionCode with input columns and add CustomerId as output columns from Lookup Transformation.
--drop table [dbo].[Customer_Dst]
CREATETABLE [dbo].[Customer_Dst](
[CustomerId] [int] NULL,
[SalesAmt] int
)
--drop table [dbo].[Lkp_Customer]
CREATETABLE [dbo].[Lkp_Customer](
[CustomerId] [int] NULL,
[CustomerName] [varchar](100) NULL,
[StreetAddress] [varchar](100) NULL,
[City] [varchar](100) NULL,
[State] [char](2) NULL,
[Region] [varchar](2) NOTNULL
)
insertinto [dbo].[Lkp_Customer]
SELECT *
FROM (
SELECT N'1'AS [CustomerId]
,N'Aamir'AS [CustomerName]
,N'1234 Street'AS [StreetAddress]
,N'Sahiwal'AS [City]
,'PJ'AS [State]
,N'AS'AS [Region]
UNIONALL
SELECT N'2'AS [CustomerId]
,N'M Raza'AS [CustomerName]
,N'Test Street Address'AS [StreetAddress]
,N'Lahore'AS [City]
,N'PJ'AS [State]
,N'AS'AS [Region]
UNIONALL
SELECT N'3'AS [CustomerId]
,N'Robert'AS [CustomerName]
,N'1234 Street'AS [StreetAddress]
,N'FrankFurt'AS [City]
,'NA'AS [State]
,N'EU'AS [Region]
UNIONALL
SELECT N'4'AS [CustomerId]
,N'John'AS [CustomerName]
,N'1234 Street'AS [StreetAddress]
,N'Paris'AS [City]
,N'NA'AS [State]
,N'EU'AS [Region]
UNIONALL
SELECT N'5'AS [CustomerId]
,N'Sam'AS [CustomerName]
,N'1234 Street'AS [StreetAddress]
,N'Charlotte'AS [City]
,N'NC'AS [State]
,N'NA'AS [Region]
) t;
--Create stored Procedure to use in Lookup Transformation
CREATEPROCEDURE dbo.GetCustomer
@Region VARCHAR(100)
AS
BEGIN
SELECT customerid
,customername
,Region
FROM dbo.Lkp_Customer
WHERE Region = @Region
END
Source Flat File
CustomerName,CustomerRegion,SaleAmt
Aamir,AS,1000
M Raza,AS,500
Use Stored Procedure with Parameter in Lookup Transformation in SSIS Package - SSIS Tutorial