Power Query按另一列整数列表拆分文本列的报错解决咨询
修正Power Query拆分文本列的M语言代码
问题核心
indexColumn存储的是文本格式的列表字符串(如"[3,19]"),并非Power Query可识别的整数列表类型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
相关产品推荐
相关产品推荐

