我们编写了一个USQL脚本来提取(.CSV文件),其中所有列都作为一行提取。但是,当作业失败时,我们无法处理所有文件。我们得到的错误消息是“VERTEX FAILED FAST”但是如果我们将文件格式转换为(.Csv)(MS-DOS)扩展名,则作业将被执行。 有人可以找出问题并告诉我们如何解决它。或者将所有列提取为行的任何其他方式也会有所帮助。我们还附上了剧本。
$scripts = @"
@rs =
EXTRACT
line string,
filename string
FROM "$filepath/$jobid/{filename}.csv"
USING Extractors.Text(delimiter:'\n', skipFirstNRows: 1);
@j =
SELECT *
FROM @rs;
@rs1 =
SELECT *
FROM @j
WHERE $output;
@k=
SELECT filename,COUNT() AS Count1
FROM @j
WHERE $output
GROUP BY filename;
OUTPUT @rs1
TO "$filepath/$jobid/logdata.txt"
USING Outputters.Text();
OUTPUT @k
TO "$filepath/$jobid/count.txt"
USING Outputters.Text();
"@
答案 0 :(得分:1)
首先我很抱歉当前错误消息不是更明显。 Vertex Failed快速错误消息包含更多详细信息,可以告诉您实际导致顶点失败的原因。你有那些信息吗?没有它,没有推测就很难回答这个问题。
话虽如此,Vertex的根本原因通常是快速适应以下类别之一:
您的行的列数与预期的不同。这可能不是这种情况。
您的行包含无法强制转换为列指定数据类型的数据。同样,在你的情况下不太可能。
您的行/单元格包含的数据对于数据类型来说太大了。这可能是你的情况,虽然你提到改变CSV文件编码使其工作似乎表明它也可能是4.如果是这种情况,你将不得不找到一种截断或拆分行的方法几行。
文件的编码不是UTF-8(默认设置假定),而是一些其他编码,它会导致错误(最多无效编码,或前3个选项中的任何一个)。如果是这种情况,请指定正确的编码或更改文件的编码。
如果这对您无法解决问题,请转发给usql(at)microsoft dot com上的工作链接。