Name aus Zeichenfolge extrahieren

Kostenstellen haben fast immer nicht nur einen Namen, sondern auch eine Kennung. Viele ERP Systeme nutzen diese beiden Informationen als einen gemeinsamen Schlüssel und kombinieren sie miteinander. Die Ergebnisse können dann zum Beispiel so aussehen:

  • KST01-01.5010 NameAA
  • DE005-10-3131 NameBB
  • 105064 NameCC
  • 01-02-03 NameDD

In Power BI Berichten oder auch anderen Darstellungen sieht das für das menschliche Auge nicht besonders schön aus und Umgangssprachlich wird dann im Unternehmen auch nur der Name genutzt. Daher möchte ich hier zeigen, wie der Name aus einer solchen Kombination herausgelöst werden kann.

Im Beispiel habe ich die Daten wieder in den Power Query Editor geladen und öffne den Erweiterten Editor

Die Idee ist nun, den Text nach der letzten Zahl zu extrahieren, um so nur den Name zu erhalten. Daher zähle ich im folgenden Query- Step die Länge des entsprechenden Textes, ziehe die Zeichenlänge bis zur letzten Zahl ab und gebe den Text vom Ende her wieder. Dafür verschachtele ich mehrere Formeln, die ich hier kurz erkläre:

Länge = Table.AddColumn(#"Geänderter Typ", "Länge", each
Text.Length([SystemName]))

Text.Length benötigt entweder einen direkten Text oder, wie in diesem Kontext, eine Spaltenreferenz. Das Ergebnis ist eine Zahl

#"Position der letzten Zahl" = Table.AddColumn(Länge, "Position", each
Text.PositionOfAny([SystemName], {"0".."9"}, Occurrence.Last))

Hier gibt die Formel Text.PositionOfAny die Position des Zeichens wieder, das in der Liste aufgeführt wird. Die Liste besteht aus den Zahlen {„0“..“9″}, also 0 bis 9. Die optionale Eingabe Occurence.Last gibt an, dass ich die Position der letzten Zahl haben möchte.

 Name = Table.AddColumn(#"Position der letzten Zahl", "Name", each
Text.End([SystemName],
Text.Length([SystemName]) -
Text.PositionOfAny([SystemName], {"0".."9"}, Occurrence.Last)
- 2)
)

Der hier dargestellte Schritt beinhaltet nun beide Formeln von oben und führt sie zusammen. Das heißt es wird vom Text-Ende heruntergezählt und die jeweilige Länge wiedergegeben. Durch das Leerzeichen muss ich hier noch zusätzliche zwei Zeichen abziehen, um auch wirklich nur den reinen Namen zu erhalten.

Schreibe einen Kommentar