This scenario presents a Job that checks the type, nullability and length of data from an incoming flow against a defined reference schema, and displays the validation results on the Run console.
The incoming flow comes from a simple CSV file that contains heterogeneous data including wrong data type, data exceeding the maximum length, wrong ID and null values in non-nullable columns, as shown below:
ID;Name;BirthDate;State;City 1;Dwight;06-04-2008;Delaware;Concord 2;Warren;25-10-2008;Montana 3;Benjamin;17-08-2008;Washington;Austin 4;Harry;14-04-2008;Kansas;Annapolis 5;Ulysses;2007-04-12;Michigan;Raleigh 6;James;19-08-2007;Delaware;Charleston .7;Bill;20-04-2007;Illinois;Bismarck 8;Ulysses;04-12-2008;;Saint Paul 9;Thomas;09-05-2008;Maryland;Albany 10;Ronald;11-02-2008;Florida;Hartford
Drop the following components: a tFileInputDelimited, a tSchemaComplianceCheck, and two tLogRow components from the Palette to the design workspace.
Connect the tFileInputDelimited component to the tSchemaComplianceCheck component using a Row > Main connection.
Connect the tSchemaComplianceCheck component to the first tLogRow component using a Row > Main connection. This output flow will gather the valid data.
Connect the tSchemaComplianceCheck component to the second tLogRow component using a Row > Rejects connection. This second output flow will gather the non-compliant data. It passes two additional columns to the next component: ErrorCode and ErrorMessage. These two read-only columns provide information about the rejected data to ease error handling and troubleshooting if needed.
Double-click the tFileInputDelimited component to display its Basic settings view and define the basic parameters including the input file name and the number of header rows to skip.
Click the [...] button next to Edit schema to describe the data structure of the input file. In this use case, the schema is made of five columns: ID, Name, BirthDate, State, and City.
Fill the Length field for the Name, State and City columns with 7, 10 and 10 respectively. Then click OK to close the schema dialog box and propagate the schema.
Double-click the tSchemaComplianceCheck component to display its Basic settings view, wherein you will define most of the validation parameters.
Select the Custom defined option in the Mode area to perform custom defined checks.
In this example, we use the Checked columns table to set the validation parameters. However, you can also select the Check all columns from schema check box if you want to perform all the checks (type, nullability and length) on all the columns against the base schema, or select the Use another schema for compliance check option and define a new schema as the expected structure of the data.
In the Checked Columns table, define the checks to be performed. In this use case:
- The type of the ID column should be Int.
- The length of the Name, State and City columns should be checked.
- The type of the BirthDate column should be Date, and the expected date pattern is dd-MM-yyyy.
- All the columns should be checked for null values, so clear the Nullable check box for all the columns.
To send rows containing fields exceeding the defined maximum length to the reject flow, make sure that the Trim the excess content of column when length checking chosen and the length is greater than defined length check box is cleared.
In the Advanced settings view of the tSchemaComplianceCheck component, select the Treat all empty string as NULL option to sent any rows containing empty fields to the reject flow.
To view the validation result in tables on the Run console, double-click each tLogRow component and select the Table option in the Basic settings view.