2016-12-15 20 views
0

Для всех моих источников CSV, я установить вытяжку:U-SQL - Vertex Ошибка: недопустимый символ при попытке преобразовать данные столбцов

USING Extractors.Csv(silent:true,skipFirstNRows:1); 
- silent is set to true to ignore bad rows 
- skipFirstNRows is set to 1 to skip the header row 

Но как ни странно, я до сих пор получаю эту ошибку:

HEX: "223122" Invalid character when converting input record. 
Position: line 2, column index: 7, column name: "IncludeOnCheck". 
Invalid character when attempting to convert column data. 

данных (образец строки & строка в вопросе)

29,1,10,DC Tax,DC Tax,0.100000,0.00,1,1,1,2014-07-12 21:34:52.4200000 +00:00,NULL,NULL,0,-1,0,0,0,NULL,NULL,NULL,1031,NULL,0,0 
33,4,10,Amenities,Amenities,1.000000,0.00,1,0,1,2014-07-12 21:34:54.1330000 +00:00,NULL,NULL,0,-1,0,0,0,NULL,NULL,NULL,1031,NULL,0,0 

Колонка Определение

EXTRACT AncillaryAmountTypeID int, 
     AncillaryAmountCategoryID int, 
     CustomerID int, 
     CheckTitle string, 
     ReportTitle string, 
     Percentage decimal, 
     FixedAmount decimal, 
     IncludeOnCheck bool, 
     AutoCalculate bool, 
     StoreAtCheckLevel bool?, 
     DateTimeModified DateTime?, 
     CheckTitleToken Guid?, 
     ReportTitleToken Guid?, 
     DeletedFlag bool, 
     MaxUsageQty int?, 
     ApplyToBasePriceOnly bool?, 
     Exclusive bool, 
     IsItem bool, 
     MinValue decimal, 
     MaxValue decimal, 
     ItemGroupID int?, 
     LocationID int, 
     ApplicationOrder int?, 
     RequiresReason bool, 
     Exemptable bool? 

Вопросы

  1. Почему я получаю ошибки преобразования, когда я указал молчать, правда, который должен игнорировать плохие строки, не так ли?
  2. Характер, который он пытался преобразовать, был «1» и в логическое. Является ли U-SQL или ADLA неспособным понять или преобразовать 1 и 0 в логические значения?

ответ

0

Да, я также наблюдал это поведение, он не конвертирует 0 или 1 в bool автоматически. Если вы хотите сделать это, то EXTRACT это как int, а затем преобразовать его в bool с помощью метода Convert.ToBoolean.

Я думаю, что тихий переключатель работает только тогда, когда существует несоответствие между предоставленной схемой и схемой фактических данных.

0

Here - это документация для параметра silent: он игнорирует ошибки преобразования, если ваш целевой тип является нулевым. В противном случае это все еще ошибки.

Кроме того, мы следуем семантике C# при преобразовании, как описано here.

 Смежные вопросы

  • Нет связанных вопросов^_^