Обработка файлов с разными столбцами в USQL

У меня есть сценарий USQL и экстрактор CSV для загрузки моих файлов. Однако в некоторых месяцах файлы могут содержать 4 столбца, а в некоторых месяцах они могут содержать 5 столбцов.

Если я настраиваю свой экстрактор со списком столбцов для 4 или 5 полей, я получаю ошибку об ожидаемой ширине файла. Проверьте разделители и т. Д. Не удивительно.

Как можно обойти эту проблему, если учесть, что USQL все еще находится в новичке и ему не хватает базовой обработки ошибок?

Я пытался использоватьбесшумный предложение в экстракторе игнорировать более широкие столбцы, что удобно для 4 столбцов. Затем получаем количество строк набора строк с условием IF, которое затем имеет экстрактор для 5 столбцов. Однако это приводит к тому, что множество переменных набора строк не используется в качестве скалярных переменных в выражении IF.

Также я попытался подсчитать стиль C # и sizeof (@ AttemptExtractWith4Cols). Ни одна из них не работает.

Фрагмент кода, чтобы дать вам представление о подходе, который я выбрал:

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

Конечно, если бы была такая вещь, какПОПРОБУЙ ПОЙМАТЬ блокировать в USQL это было бы намного проще.

Это даже разумный подход?

Любой вклад будет принята с благодарностью.

Спасибо за ваше время.

Ответы на вопрос(3)

Ваш ответ на вопрос