Here is the scenario; sometimes I receive source files with columns sizes larger than the original configuration setup in master data. During data load, some rows do not get loaded b/c there is truncation on data. There is no flag in Data Migrator to indicate that data was not loaded in its entirety due to truncation. Theonly way is to look through the log files. Data Migrator flow reads/processes only the
rows with column size fitting the master data specs and rpeorts the flow execution wuth return code 0 - but it is hardly a success. I tried using `Record Logging` feature that is available on the flow properties with attribute `Format Errors`; however that did nothing to capture truncated rows. Is there some method to flag the flow if ther eis truncation on the data? I know , I can setup master data with larger sizes, but I am looking for something that can be setup on a flow as a flag to indicate that some rows were not loaded due to truncation of data.
WebFOCUS 7.7, iWay Data Migrator, Windows
Excel, PDF, HTML, XML
From our iWay manager: if you have not done so, please open a case with Customer Support Services for assistance. You may call 1-800-736-6130, or access online at InfoResponse.
Focal Point Moderator
Information Builders, Inc.
We have the same situation. Add this stored proc before and after the data flow:
-* Verify the process. -DEFAULTH &&U_FILE='NONE' -DEFAULTH &&CO = 'MAN' -IF &&U_FILE NE 'NONE' GOTO :VERIFY; -* Allocate a file to store source format problems. -SET &&U_FILE_NAME = LOCASE(&&CO.LENGTH, &&CO, 'A&&CO.LENGTH') || '_emgfile' || &YYMD || EDIT(HHMMSS('A8'),'_99_$99_$99'); -SET &&U_FILE_EXT = &&U_FILE_NAME || '.text'; -SET &&U_FILE = 'baseapp/' || &&U_FILE_EXT ; FILEDEF EMGFILE DISK &&U_FILE SET EMGSRV=FILE -RUN -EXIT -* job has finished running ... test to see if emgfile contains values -:VERIFY APP QUERY baseapp HOLD TABLE FILE FOCAPPQ PRINT SIZE WHERE FILENAME EQ '&&U_FILE_EXT'; ON TABLE HOLD AS T_FSIZE END -RUN -READFILE T_FSIZE -RUN -SET &&KILL_RPC = IF &SIZE EQ 0 THEN 'N' ELSE 'Y'; -SET &MSG1 = IF &&KILL_RPC EQ 'N' THEN ' ' ELSE '-TYPE (FOC0209) Source format errors, check following file for details'; -SET &MSG2 = IF &&KILL_RPC EQ 'N' THEN ' ' ELSE '-TYPE (FOC0209) File: ' | &&U_FILE; -SET &FDEL = IF &&KILL_RPC EQ 'Y' THEN ' ' ELSE 'APP DELETEF BASEAPP &&U_FILE_NAME TEXT'; &MSG1.EVAL &MSG2.EVAL &FDEL.EVAL -EXIT
For every row that gets removed from the query because of truncation, a line is added to the EMGFILE. If the EMGFILE has any values, then the process will set the KILL_RPC flag.
Side note: You might want to break the above into 2 procedures just in case you run multiple data flows - as RPC - in a single process flow.
"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
|Powered by Social Strata|