U-SQL列类型转换

时间:2017-07-25 06:11:36

标签: azure-data-lake u-sql

我创建了一个U-SQL查询,它从DataLake Store获取输入文件并转换值。最终输出存储在DataLake Store中。

String str = "bevæge";

byte[] b = str.getBytes();

try {
    System.out.println(new String (b, "ISO8859-1"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

它显示以下错误,

  

执行失败,错误为'1_SV1_Extract错误:'{“diagnosticCode”:195887132,“severity”:“错误”,“组件”:“RUNTIME”,“source”:“User”,“errorId”:“E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_INVALID_ERROR” ,“message”:“尝试转换列数据时无效的字符。”,“description”:“HEX:\”2243616E696E6522 \“转换输入记录时字符无效。\ n位置:第1行,列索引:1,列名: \“Id \”。“,”resolution“:”检查输入是否有错误,或使用\“silent \”开关忽略输入中的over(under)-sized行。\ n忽略“无效”行可能会忽略影响作业结果,并且类型必须可以为空,才能忽略转换错误。“,”helpLink“:”“

1 个答案:

答案 0 :(得分:2)

似乎Id列并不总是Integer类型

我首先将Id列提取为字符串,然后在第二步中尝试使用用户定义的函数将其转换为Int,如下所示:https://msdn.microsoft.com/en-us/library/azure/mt621309.aspx(基于DateTime的示例)。

另一个选项是在提取器中使用silent:true,因此您会自动忽略转换失败的行。