You have added the silent: true
argument to your USING
clause meaning the EXTRACT
will not fail or even complain if the rows don't quite match your schema definition. This is the intended behaviour and probably what you want for this example. In order to pick up the other rows, you can use OUTER UNION
, like in this recent example:
Another working example similar to yours:
@input =
EXTRACT ControllerID int?,
ParameterID int?,
MeasureDate DateTime,
Value float
FROM "/input/input56.csv"
USING Extractors.Csv(silent : true, quoting : true, nullEscape : "/N", skipFirstNRows : 1)
OUTER UNION ALL BY NAME ON ( ControllerID )
EXTRACT ControllerID int?
FROM "/input/input56.csv"
USING Extractors.Csv(silent : true, quoting : true, nullEscape : "/N", skipFirstNRows : 1);
OUTPUT @input
TO "/output/output.txt"
USING Outputters.Tsv(quoting : false);
I used this sample file and got these results:

NB I have changed the nullability of your columns as otherwise the OUTER UNION
add default values for the .Net types as per the Sep 2016 release notes.