How To Create Dynamic Parameter File In Informatica
Scenario 12:
How to Create Parameter File Dynamically?Let's Chat: There could be n no of case for which we need to create Parameter File dynamically. Here I am taking a simple case for explanation.
CASE: Our source file name changed for each and every run. Let's say Customer_US for United States Customer one day and Customer_Australia for Australian Customer second day and so on.
We have only one source folder where these files comes through FTP. Let's say Infa_Shared/SrcFiles/Cust
Theory/Analysis:
First we need to list out files in Source directory and write into file. Yes, through redirecting dir command output to a file. Treat this file as a source for a mapping which we will be using to create parameter file.
One point we have take care here If more than one files are there in Source Folder then we need to stop creating parameter file because we can pass only one file name through parameter file for processing of actual mapping.
Practically
Step 1:
Create source metadata manually in Source Analyzer.
Sources Menu-->Create
Source File Name: CUST_PARAM
Database Name: Flat_File
Database Type: Flat File
Create one column: File_NameData Type StringPrec 50
Step 2:
Create target metadata manually in Target Analyzer
Targets Menu-->Create
File_Name: Cust_Param_File
Database Type: Flat File
Create one column: RowsData Type StringPrec 500
Important Note: We need to decide our Session/Workflow name of Actual Session/Workflow which is going to use this parameter file, because we have to pass these value hard coded in mapping for header section of parameter file.
Ex: Session_Name: S_Actual_Session
Workflow_Name: WKF_S_Actual_Workflow
Step 3: Dag and drop your created source and target to mapping designer.
Step 4:
Aggregator
Drag and drop File_Name from Source Qualifier to Aggregator
Create two ports
Total_Record (Output Port) = COUNT(FILE_NAME)
Dummy (Output Port)= 1
(No Need to select any port as a Group Port)
Step 4:
Expression
Drag and drop File_Name from Source Qualifier to Expression
Create one Port
Dummy (Output Port) = 1
Step 5:
Sorter
Drag and drop File_Name and Dummy column to Sorter from expression
Select File_Name as key
Note: We need to sort the data before sending it to joiner as we are joining two pipelines of same source qualifier.
Step 6:
Joiner
Drag and Drop columns from aggregator and expression to Joiner.
Join Condition: Dummy = Dummy 1
Join Type: Normal Join
Step 7:
Expression
Drag and Drop Total_Record and File_Name Port.
Create three output port.
ERROR_HANDLING (Output Port) = IIF(TOTAL_RECORD > 1, ABORT('More than Two Files are there in source folder'))
HEADER: (Output Port) = '[SCENARIOS.WF:WKF_Actual_Workflow.ST:Actual_Session]'
O_FILE_NAME: (Output Port) = '$InputFile_Name='||FILE_NAME
Step 8:
Normalizer
Create Normalizer (We need Normalizer as two columns values we have to write in two rows)
Right Click-->Edit-->Normalizer Tab
Column_Name Level Occurs Datatype Prec Scale
Row 0 2 String 500 0
Connect Header to Row1 and File_Name to Row 2
Step 9
Connect Row column from Normalizer to Target.
Step 10:
In workflow manager we need to create a command task before session for creating source file for mapping which we are using to create parameter file.
Command Task
Create a Command Task in Workflow Manager
Command 1= dir C:\Informatica\9.5.1\server\infa_shared\SrcFiles\CUST\*.* /b > C:\Informatica\9.5.1\server\infa_shared\SrcFiles\Parameters\PARAM_SRC.txt
Set Error Handling Properties in Properties tab: Fail Task if any Commands fail (Check)
Note: My server is windows server so I have written DOS command. Unix Server user please convert command above for Unix.
Step 11:
We need to set link condition for a link which is connecting command task to session.
$Command.PrevTaskStatus=Succeeded
Step 12:
Set Source and Target File Name in Session as below.
Source: PARAM_SRC.txt
Target: CUST_PARAM.pmf
Note: I have set Output and Source File Directory as same: $PMSourceFileDir\Parameters
Means I am reading and creating Parameter file in same directory.
Yahoo!!! Our Parameter file is ready in $PMSourceFileDir\Parameters with name of CUST_PARAM.pmf. Use it in your actual mapping.
Below step you have to add in your actual mapping in which you are using this dynamically created parameter file.
Step 13:
As we have to take care about clean up of current parameter file and source directory location for next run so, we need to use one more command task after your actual session. Let's say it S_Actual_Session.
Command Task
Command 1: del /Q C:\Informatica\9.5.1\server\infa_shared\SrcFiles\Parameters\*.*
Command 2: del /Q C:\Informatica\9.5.1\server\infa_shared\SrcFiles\CUST\*.*
Set Error Handling Properties in Properties tab: Fail Task if any Commands fail (Check)
Crate a link condition from you session to command task$Actual_Session.PrevTaskStatus=Succeeded
BINGO!!!
Feel free to post your doubt/your marks for my effort in comment section.
Due to limitation, I can't attach exported .xml file which you can Import in your repository and see or analyse. (Feel free to mail me if you need .xml file with Scenario number and Question.)
If you like the approach and solution feel free to share with others.
Thanks.
hpandey.harsh@gmail.com
How To Create Dynamic Parameter File In Informatica
Source: http://informaticachamp.blogspot.com/2014/03/scenario-12-how-to-create-parameter.html
Posted by: lafranceshearompal.blogspot.com
0 Response to "How To Create Dynamic Parameter File In Informatica"
Post a Comment