Azure Data Factory中split后取最后元素:函数链是否正确?报错原因?
Azure Data Factory表达式疑问解答
表达式正确性确认
你的表达式 @last(split(dataset().fileName, '/')) 是完全正确的,和Python里用s.split('/')[-1]的逻辑完全一致:
split(dataset().fileName, '/')会将文件名按/分割为字符串数组last()函数直接提取数组的最后一个元素,也就是你需要的目标文件名hospital_admissions.csv
编辑器报错但运行正常的原因
这是ADF表达式编辑器的静态语法校验bug:
- 编辑器的类型检查逻辑没有正确识别
split函数返回的是字符串数组,错误判定传入last()的是单个字符串,因此抛出Cannot fit string list item into the function parameter string的提示 - 但实际运行时,ADF的执行引擎会正确解析
split的返回值类型,按数组处理并执行last()函数,所以最终结果符合预期
你可以临时在表达式中加入typeof(split(dataset().fileName, '/'))验证,运行时会返回Array,这也能佐证编辑器的校验结果是错误的。
内容的提问来源于stack exchange,提问作者Jonas Palačionis
相关产品推荐
相关产品推荐

