Power BI:按字符串从其他列拆分列

Power BI: Split Column by String from other column

情况:

我有一列包含需要提取的信息。以下是一些示例内容:

内容
1 CompanyName1 OrderNumber1 SomeUnimportantStuf1
2 CompanyName2 CompanySurname2 OrderNumber2 SomeUnimportantStuff2
3 CompanyName3 CompanySurname3 CompanyAddition3 OrderNumber_ABC3 SomeUnimportantStuff3 SomeMoreUnimportantStuff3

所以基本上是公司名称(包含从 0 到 3 spaces)、订单号和末尾的一些不必要的信息。

我需要提取 OrderNumber。问题:

到目前为止我成功完成的事情:

这就是我卡住的地方。据我了解,最简单的方法是:

另一个想法是在“内容”列中搜索最长的单词并提取它。但我也找不到任何解决方案。

有没有人可以给我一个有用的提示?

这将 return 字符串中最长的单词:

  • 拆分字符串
  • 获取每个拆分的长度
  • 获取最大长度
  • 匹配最大长度到位置
  • return那个位置的单词
let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Content", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each 
        Text.Split([Content]," "){
            List.PositionOf(
                List.Transform(
                    Text.Split([Content]," "), 
                        each Text.Length(_)),
                                List.Max(
                                    List.Transform(
                                        Text.Split([Content]," "), 
                                            each Text.Length(_))))})
in
    #"Added Custom"

编辑:重写 M 代码以更好地显示算法
不知道效率高还是低,但是比较容易理解

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Content", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each 
        let 
          wordList = Text.Split([Content]," "),
          lengthList = List.Transform(wordList, each Text.Length(_)),
          lengthLongestWord = List.Max(lengthList),
          positionLongestWord = List.PositionOf(lengthList,lengthLongestWord),
          longestWord = wordList{positionLongestWord}
        in 
          longestWord)
in
    #"Added Custom"