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

Power Query按另一列整数列表拆分文本列的报错解决咨询

修正Power Query拆分文本列的M语言代码

问题核心

  1. indexColumn存储的是文本格式的列表字符串(如"[3,19]"),并非Power Query可识别的整数列表类型
  2. Table.SplitColumn的拆分器参数无法直接引用每行的列值,必须结合自定义函数逐行处理

解决步骤

步骤1:转换indexColumn为整数列表

先把文本格式的列表字符串转成合法的整数列表:

#"Convert Index to List" = Table.TransformColumns(myTable, {
    {"indexColumn", each List.Transform(Text.Split(Text.Trim(_, "[]"), ","), Number.From), type list}
})

步骤2:逐行拆分目标文本列

通过Table.AddColumn添加自定义列,每行根据对应的整数列表拆分文本:

#"Split Text by Custom Positions" = Table.AddColumn(#"Convert Index to List", "SplitResult", each 
    Splitter.SplitTextByPositions([indexColumn])([textStringColumn])
)

步骤3:(可选)展开拆分结果为多列

如果需要把拆分后的列表展开成独立列,执行以下操作:

#"Expand Split Result" = Table.ExpandListColumn(#"Split Text by Custom Positions", "SplitResult")

完整可运行代码

let
    Source = Table.FromRows(Csv.Document("textStringColumn,indexColumn
abc 1234 and ghyyyu 432,""[3,19]""
453,""[0]""
hky 7332 4343,""[3,8]"""), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [textStringColumn = _t, indexColumn = _t]),
    #"Convert Index to List" = Table.TransformColumns(Source, {
        {"indexColumn", each List.Transform(Text.Split(Text.Trim(_, "[]"), ","), Number.From), type list}
    }),
    #"Split Text by Custom Positions" = Table.AddColumn(#"Convert Index to List", "SplitResult", each 
        Splitter.SplitTextByPositions([indexColumn])([textStringColumn])
    ),
    #"Expand Split Result" = Table.ExpandListColumn(#"Split Text by Custom Positions", "SplitResult")
in
    #"Expand Split Result"

关键说明

  • 必须在each上下文里引用[indexColumn]和[textStringColumn],确保拆分逻辑作用于单行数据
  • Splitter.SplitTextByPositions仅接受整数列表,所以必须先完成格式转换,否则会触发类型错误

内容的提问来源于stack exchange,提问作者simon.watson.sjw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:01