Manejo de archivos con diferentes columnas en USQL

Tengo un script USQL y un extractor CSV para cargar mis archivos. Sin embargo, algunos meses los archivos pueden contener 4 columnas y algunos meses pueden contener 5 columnas.

Si configuro mi extractor con una lista de columnas para 4 o 5 campos, obtengo un error sobre el ancho esperado del archivo. Ve a ver delimitadores, etc., etc. No es de extrañar.

¿Cuál es la solución a este problema, dado que USQL todavía está en un novato y le falta un manejo básico de errores?

He intentado usar elsilencio cláusula en el extractor para ignorar columnas más anchas que es útil para 4 columnas. Luego, obtenga un recuento de filas del conjunto de filas con una condición IF que luego tenga un extractor para 5 columnas. Sin embargo, esto lleva a un mundo de variables de conjunto de filas que no se utilizan como variables escalares en la expresión IF.

También probé un recuento de estilo C # y un sizeof (@ AttemptExtractWith4Cols). Ni trabajo.

Fragmento de código para darle una idea del enfoque que estoy tomando:

DECLARE @SomeFilePath string = @"/MonthlyFile.csv";

@AttemptExtractWith4Cols =
    EXTRACT Col1 string,
            Col2 string,
            Col3 string,
            Col4 string
    FROM @SomeFilePath
    USING Extractors.Csv(silent : true); //can't be good.

//can't assign rowset to scalar variable!
DECLARE @RowSetCount int = (SELECT COUNT(*) FROM @AttemptExtractWith4Cols);

//tells me @AttemptExtractWith4Cols doesn't exist in the current context!
DECLARE @RowSetCount int = @AttemptExtractWith4Cols.Count();

IF (@RowSetCount == 0) THEN
    @AttemptExtractWith5Cols =
        EXTRACT Col1 string,
                Col2 string,
                Col3 string,
                Col4 string,
                Col5 string
        FROM @SomeFilePath
        USING Extractors.Csv(); //not silent
END;


//etc

Por supuesto, si hubiera tal cosa como unTRATA DE ATRAPARLO bloquear en USQL esto sería mucho más fácil.

¿Es este un enfoque razonable?

Cualquier contribución será muy apreciada.

Gracias por tu tiempo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta