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).
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:
siehe auch eindeutige Werte ermitteln / Dubletten entfernen, List.Distinct()
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],"_;,-/,'""' ")
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
Kommentar veröffentlichen