Power BI查询 - 将分隔符之间的文本提取到新列

时间:2016-09-05 07:50:04

标签: powerbi powerquery

我有一个包含以下格式的文本列的表:

  

"随机文字[ABC - ######]其他随机文字"

对于包含" [ABC - "我想提取一个新专栏" ABC - ######"其中######是随机数,至少有4个数字,但可以更多。

这是我到目前为止所做的工作:

= Table.AddColumn(#"Changed Type", "Custom", each if Text.Contains([TextColumn], "[ABC") then "FOUND" else "NotFound")

但是我无法用数字提取子字符串。

有人能帮帮我吗? 谢谢 DK

2 个答案:

答案 0 :(得分:3)


不太复杂的版本

let
    tbl = #table({"TextColumn"}, {
        {"qwer"},
        {"qwer [ABC-1234] asdf"},
        {"qwer [ABC-1234]"},
        {"[ABC-1234] asdf"}
    }),
    AddColumn = Table.AddColumn(tbl, "ExtractedNumber", each try Splitter.SplitTextByEachDelimiter({"[ABC-","]"})([TextColumn]){1} otherwise "None")
in
    AddColumn


应该是这样的

enter image description here

答案 1 :(得分:0)

解决使用:

= Table.AddColumn(#"Changed Type", "Custom", each 
if Text.Contains([TextColumn], "[ABC-") then
(Text.Range((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), 0, (Text.PositionOf((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), "]", Occurrence.First))))
else "None")

正如评论中所建议的

 Text.PositionOf

会导致更快。

由于