Azure Dataflow派生列中split函数无法正常工作的原因排查
可能的原因及对应解决方法
分隔符并非英文逗号:
很多时候看似是英文逗号,实际可能是全角中文逗号(,)、带空格的逗号(,或,)、甚至不可见控制字符。先通过indexOf(EAN, ',')验证是否存在英文逗号:返回-1说明字段里的分隔符不是英文逗号。
解决:用替换函数统一转成英文逗号,比如replace(EAN, ',', ',')(替换全角逗号),或者用正则替换所有类似分隔符:regexReplace(EAN, '[,,\\s]', ',')(同时处理全角/半角逗号和空格),再执行split。字段类型不是字符串:
如果EAN字段是数组、对象或其他非字符串类型,直接调用split会将整个字段内容转为单个字符串输出,自然无法拆分。
解决:先将字段转为字符串类型,再拆分:split(toString(EAN), ',')。split函数使用有误:
Azure Dataflow中split的正确语法是split(字段名, 分隔符),确保分隔符用英文单引号包裹(比如split(EAN, ',')),不要出现语法错误(比如嵌套引号、漏写分隔符)。
另外,要直接取最后一个有效EAN,无需手动计算索引,可直接用last(split(处理后的EAN字段, ',')),更简洁可靠。存在不可见特殊字符:
部分数据导出时会带入不可见控制字符(比如换行符、制表符),导致逗号被“隐藏”,split无法识别。
解决:用trim(EAN)先去除首尾不可见字符,或者用regexReplace(EAN, '\\p{C}', '')清除所有控制字符后再拆分。
内容的提问来源于stack exchange,提问作者DarkVader

