You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory中PowerQuery拆分列触发Table.AddColumn报错原因与解决方案问询

报错诱因
  • ADF数据流的Power Query解析器对嵌套的步骤调用支持性较差:你当前的第二个拆分步骤直接把Table.TransformColumnTypes作为参数嵌套在Table.SplitColumn内部,ADF的M表达式解析器无法正确识别嵌套的上下文,导致拆分列底层调用Table.AddColumn时无法读取对应列的元数据,触发报错。
  • 你使用的Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true)第三个参数设置为true(从右往左匹配分隔符),ADF的M运行时对该参数的兼容存在已知问题,在处理无分隔符的行时容易触发表达式解析错误。
  • 待拆分的ApprovedDate列如果存在空值、非标准日期格式的行,嵌套转换类型时也会导致列元数据识别失败。
解决方案

把嵌套的步骤拆分为独立的显式步骤,同时调整分隔符拆分函数的参数即可解决问题,修改后的M代码如下:

let
  Source = dedupedetipscsv,
  // 单独做列类型转换步骤,避免嵌套
  #"Transformed ApprovedDate Type" = Table.TransformColumnTypes(Source, {{"ApprovedDate", type text}}, "en-GB"),
  // 拆分Candidate列,用带最大拆分次数的拆分函数替代原函数,兼容度更高
  #"Split Candidate by Space" = Table.SplitColumn(#"Transformed ApprovedDate Type", "Candidate", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv, 1), {"Candidate.1", "Candidate.2"}),
  // 拆分ApprovedDate列
  #"Split ApprovedDate by Space" = Table.SplitColumn(#"Split Candidate by Space", "ApprovedDate", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv, 1), {"ApprovedDate.1", "ApprovedDate.2"})
in
  #"Split ApprovedDate by Space"

修改说明:

  • 所有步骤独立显式声明,ADF解析器可以正确识别每一步的列元数据,避免解析失败
  • 把Splitter.SplitTextByEachDelimiter替换为Splitter.SplitTextByDelimiter,第三个参数传入1表示最多拆分1次,如果你需要从右往左拆分,可以把该参数替换为{1, RelativePosition.FromEnd},兼容度远高于原函数的从右往左拆分参数
  • 避免隐式转换导致的元数据丢失问题

内容的提问来源于stack exchange,提问作者nocoyote5374

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:04