Обработка файлов с разными столбцами в 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 это было бы намного проще.
Это даже разумный подход?
Любой вклад будет принята с благодарностью.
Спасибо за ваше время.