Azure Data Lake Analytics中U-SQL执行报错求助
修复你的U-SQL查询错误
先帮你定位到代码里的核心问题:sum(int.valor)这行的类型转换语法不符合U-SQL规范,这也是导致报错的直接原因。下面是修正后的完整可执行查询:
DECLARE @log_file string = "/datalake/valores.tsv"; DECLARE @summary_file string = "/datalake/output.tsv"; @log = EXTRACT valor string from @log_file USING Extractors.Tsv(); @summary = SELECT SUM(CAST(valor AS int)) AS somavalor FROM @log; OUTPUT @summary TO @summary_file USING Outputters.Tsv();
错误原因与额外注意事项:
- 语法错误解释:U-SQL不支持
int.valor这种类型转换写法,必须使用CAST(列名 AS 目标类型)或者Convert.ToInt32(列名)这类标准转换函数。你从TSV提取的valor是字符串类型,必须先转为整数才能执行求和操作。 - 数据兼容性问题:要确保
valores.tsv里的valor列所有值都能正常转成整数,如果存在非数值内容,建议用TRY_CAST(valor AS int)替代CAST,这样无法转换的值会被识别为null,求和时会自动忽略,避免查询直接崩溃。 - 权限验证:确认你的Azure Data Lake Analytics账户拥有读写指定存储路径的权限,避免出现隐性的权限报错。
如果你那个没写完的"When..."疑问有具体内容,比如特定场景、补充报错信息或者扩展需求,可以把细节补充完整,我再帮你进一步分析。
内容的提问来源于stack exchange,提问作者kPiroto
相关产品推荐
相关产品推荐

