Text.SplitAny Trunkation Extraktion mit Power Query



Lern Video




Mit Excel Power Query Funktion Text.SplitAny kann man sehr elegant ein Teilwort aus einem
Text bis zum ersten Auftauchen eines oder mehrerer Trennzeichen (Trunkation) durchführen.

Dies kann v.a. dann sehr sinnvoll sein, wenn man ein weiteres Filter Merkmal in einer
Tabelle / Modell benötigt (Datenveredelung).




Nachdem die Tabelle in Power Query geladen wurde,
eine neue benutzerdefinierte Spalte (Werte) erstellen und folgende benutzerdefinierte Spaltenformel hinterlegen:

Text.SplitAny([Bezeichnung],"_;,-/,'""' ")


Das Ergebnis ist ein List-Objekt. Wenn nur das erste Teilwort benötigt wird,
eine weitere benutzerdefinierte Spalte einfügen, in welcher auf das erste Teilwort in dem List-Objekt verwiesen wird:




verbesserte Text.SplitAny Funktion (benutzerdefinierte Funktion)

neue Abfrage erstellen, Language M Code kopieren und Abfrage in
fxTextSplitAnyNew
umbenennen

Diese verbesserte Funktion erlaubt zusätzlich die Benutzung von einer Liste von strings (Listobjekt) anstatt einzelner Zeichen (characters) als zweiten Parameter

--- SCHNIPP ---

let fxTextSplitAnyNew =   
 (string as text, separator as any) =>

let

/* Debug parameters
    string = "Do I need gloves for Power Query?",
    separator = {"s", "need ", "Do ", "?", "g", "for "},
*/     

    SeparatorIsTypeList = Value.Is(separator, type list),

    ListFunction = List.Accumulate(separator, 
                                  {string}, 
                                  (state, current) => 
                                    let 
                                        DoForEveryItemInTheList = List.Transform(state, each Text.Split(_, current)),
                                        FlattenNestedList = List.Combine(DoForEveryItemInTheList),
                                        RemoveEmpties = List.Select(FlattenNestedList, each _<>"" and _<>" ")
                                    in
                                        RemoveEmpties
                                        ),

    TextFunction = Text.SplitAny(string, separator),

    Result = if SeparatorIsTypeList then ListFunction else TextFunction

in
    Result ,
documentation = [
Documentation.Name =  " Text.SplitAnyNew ",
Documentation.Description = " Teilt eine Zeichenkette (string) durch Trennzeichen (delimiter) in einzelne Zeichen (character) auf. Trennzeichen können entweder einzelne Zeichen einer Zeichenkette oder eine Liste von Zeichenketten sein ",
Documentation.LongDescription = " Teilt eine Zeichenkette (string) durch Trennzeichen (delimiter) in einzelne Zeichen (character) auf. Trennzeichen können entweder einzelne Zeichen oder Zeichenketten einer Liste sein. ",
Documentation.Category = " Text ",
Documentation.Source = " https://wp.me/p6lgsG-Yr . ",
Documentation.Version = " 1.0 ",
Documentation.Author = " Imke Feldmann: www.TheBIccountant.com: https://wp.me/p6lgsG-Yr, geändert von Sven Galonska",
Documentation.Examples = {[Description =  " See this blogpost: https://wp.me/p6lgsG-Yr  ",
Code = " fxTextSplitAnyNew(""Do I need gloves for Power Query?"", {""s"", ""need"", ""do"", ""?"", ""g"", ""for""}) ",
Result = " {""I"", ""love"", ""Power Query""} "]}]
  
 in  
  Value.ReplaceType(fxTextSplitAnyNew, Value.ReplaceMetadata(Value.Type(fxTextSplitAnyNew), documentation))

--- SCHNAPP ---

siehe auch eindeutige Werte ermitteln / Dubletten entfernen, List.Distinct()

Kommentare

Beliebte Posts aus diesem Blog

Vergleich mit 2 Bedingungen, INDEX(), VERGLEICH()

Dropdown Liste mit Mehrfachauswahl

nützliche Text Funktionen in Power Query