u-sql 无法处理 null
u-sql fails to handle null
我正在试用 azure datalake,并尝试在我的测试文件上测试 u-sql。
这是我的测试脚本
@input =
EXTRACT TagName string,
time DateTime,
valuee float,
Quality int
FROM "/MCVD/{*}/{*}/{*}/{*}/{*}/{*}/{*}.csv"
USING Extractors.Csv(skipFirstNRows:1, nullEscape:"");
OUTPUT @input
TO "/output/Test-query.csv"
USING Outputters.Csv();
当 运行 在数据湖分析中时,我在第 56 行的列值出现错误。
这是第56行的内容
"M32_Amp_FurnaceAluTemperatureTubeReference",2018-02-08T14:48:53.5780000,"",1
我知道这是因为保存值的列是空的(它是文件中的第一个空行)。我尝试使用各种 NullEscape 模式,但它仍然失败。
我尝试将列提取为字符串,但没有产生任何错误。
这是错误:
Vertex failed
Vertex failure triggered quick job abort. Vertex failed: SV1_Extract[0][0] with error: Vertex user code error.
VertexFailedFast: Vertex failed with a fail-fast error
E_RUNTIME_USER_EXTRACT_ROW_ERROR: Error occurred while extracting row after processing 56 record(s) in the vertex' input split. Column index: 2, column name: 'valuee'.
E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_EMPTY_ERROR: Failure when attempting to convert empty column data.
U-SQL支持nullable data-types。只需在数据类型后用问号标记它们,例如
@input =
EXTRACT TagName string,
time DateTime,
valuee float?,
Quality int
FROM [your input path]
USING Extractors.Csv(skipFirstNRows:1, silent:true);
您还可以通过将提取器的 silent
开关设置为 true
来抑制错误行。但是,我在您的脚本和示例数据中遇到了一些不同的错误。这是准确的重现吗?
从文件中的值为 "null"(不带引号)的 csv 中提取时,我遇到了同样的错误。我预计 nullEscape 参数的默认空值将处理提取,但它引发了空值转换错误。
这可能是因为我的 csv 没有双引号作为引用。
使用 nullEscape:"null" 参数解决了我的问题。
我正在试用 azure datalake,并尝试在我的测试文件上测试 u-sql。
这是我的测试脚本
@input =
EXTRACT TagName string,
time DateTime,
valuee float,
Quality int
FROM "/MCVD/{*}/{*}/{*}/{*}/{*}/{*}/{*}.csv"
USING Extractors.Csv(skipFirstNRows:1, nullEscape:"");
OUTPUT @input
TO "/output/Test-query.csv"
USING Outputters.Csv();
当 运行 在数据湖分析中时,我在第 56 行的列值出现错误。
这是第56行的内容
"M32_Amp_FurnaceAluTemperatureTubeReference",2018-02-08T14:48:53.5780000,"",1
我知道这是因为保存值的列是空的(它是文件中的第一个空行)。我尝试使用各种 NullEscape 模式,但它仍然失败。
我尝试将列提取为字符串,但没有产生任何错误。
这是错误:
Vertex failed
Vertex failure triggered quick job abort. Vertex failed: SV1_Extract[0][0] with error: Vertex user code error.
VertexFailedFast: Vertex failed with a fail-fast error
E_RUNTIME_USER_EXTRACT_ROW_ERROR: Error occurred while extracting row after processing 56 record(s) in the vertex' input split. Column index: 2, column name: 'valuee'.
E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_EMPTY_ERROR: Failure when attempting to convert empty column data.
U-SQL支持nullable data-types。只需在数据类型后用问号标记它们,例如
@input =
EXTRACT TagName string,
time DateTime,
valuee float?,
Quality int
FROM [your input path]
USING Extractors.Csv(skipFirstNRows:1, silent:true);
您还可以通过将提取器的 silent
开关设置为 true
来抑制错误行。但是,我在您的脚本和示例数据中遇到了一些不同的错误。这是准确的重现吗?
从文件中的值为 "null"(不带引号)的 csv 中提取时,我遇到了同样的错误。我预计 nullEscape 参数的默认空值将处理提取,但它引发了空值转换错误。
这可能是因为我的 csv 没有双引号作为引用。
使用 nullEscape:"null" 参数解决了我的问题。