Power Query: Die Schreibweise von Straßennamen vereinheitlichen mit List.Accumulate
22.03.2023
Wer Adressdaten erfasst, nutzt oder verwaltet, kennt das Phänomen: Straßennamen enden mit „str.“ oder „strasse“ oder „-Str.“. Das ist ein Hindernis, wenn Adressen auf Duplikate überprüft werden müssen. Noch gravierender wird es, wenn mehrere Listen mit Adressdaten in ein CRM- oder ERP-System zu importieren sind. Spätestens dann erweist sich die konsistente Schreibweise von Straßennamen als unerlässlich. Denn die Daten müssen abgeglichen und Duplikate vermieden werden. Mit Hilfe von Power Query lässt sich die Genauigkeit und Zuverlässigkeit der Adressdaten sicherstellen. Die Anweisung List.Accumulate sowie Mapping spielen hierbei die Hauptrollen. Das sind die Schritte:
Schritt 1: Eine Mapping-Tabelle anlegen
In der folgenden Tabelle namens tblAdressen soll die Schreibweise der Straßennamen vereinheitlicht werden, damit die Adressdaten in anderen Systemen fehlerfrei weiterverarbeitet werden können.
Die Spalte Straße weist mehr als eine Ungereimtheit auf. Ersetzt werden sollen:
- »str.« durch »straße«,
- »strasse« durch »straße«,
- »-Str.« durch »-Straße«
Für den Fall, dass später weitere abweichende Schreibweisen auftauchen, lege ich eine Mapping-Tabelle an. In ihr kann ich bei Bedarf noch neue Varianten ergänzen, bin also flexibel. Die Tabelle bekommt den Namen Mapping und hat die beiden Spalten Alt und Neu.
TIPP: Wer mehr zur korrekten Schreibweise von Straßennamen erfahren möchte, wird hier fündig:
https://www.duden.de/sprachwissen/rechtschreibregeln/strassennamen
https://www.sekada.de/din-5008/din-lexikon-a-z/artikel/12-tipps-um-strassennamen-immer-korrekt-nach-din5008-zu-schreiben/
Schritt 2: Beide Tabellen in Power Query einlesen und bearbeiten
- Ich klicke in die Tabelle Mapping und wähle die Befehlsfolge Daten > Aus Tabelle/Bereich.
- Im Power Query-Editor ändere ich die Datentypen beider Spalten auf Text.
- Dann wähle ich Start > Schließen & Laden in … Nur Verbindung erstellen.
- Als nächstes setze ich den Cursor in die Tabelle tblAdressen und wähle wiederum Daten > Aus Tabelle/Bereich.
- Den Abfragenamen ändere ich um in Adressen.
Nun erstelle ich eine neue benutzerdefinierte Spalte, in der alle in der Tabelle Mapping hinterlegten Ersetzungsvarianten durchgespielt werden.
- Dazu wähle ich Spalte hinzufügen > Benutzerdefinierte Spalte.
- Ich benenne die Spalte Straße NEU und füge dann folgenden M-Code ein:
=List.Accumulate( List.Numbers(0, Table.RowCount(Mapping)),
[Straße],
(Ausgangstext, Zeilennummer) =>
Text.Replace(Ausgangstext, Mapping[Alt]{Zeilennummer}, Mapping[Neu]{Zeilennummer}))
Hinweis: Die Zeichenfolge »Straße« muss durch den jeweiligen Spaltennamen ersetzt werden.

In der benutzerdefinierten Spalte werden mit List.Accumulate alle Ersetzungsvarianten aus der Mapping-Tabelle durchlaufen
- Anschließend ändere ich noch die Abfolge der Spalten, in dem ich die Spalte Straße NEU gleich rechts neben Straße ziehe.

Mit den Abfragen Adressen und Mapping wird die Schreibweisen der Straßennamen mittels flexibler Ersetzung vereinheitlicht
Ausblick für alle, die mehr wissen wollen
Wer sich nicht nur für die Lösung, sondern auch für deren Funktionsweise interessiert, erfährt das im nächsten Power-Query-Rezept. Dort erkläre ich, wie aus der Anweisung Text.Replace() eine Funktion entsteht und wie List.Accumulate mit dieser Funktion arbeitet.
Ähnliche Beiträge
-
Power Query: Merkmale über mehrere Spalten hinweg filtern
Wer hat schon mal versucht, eine Tabelle in Excel oder Power BI nach Merkmalen zu filtern, die über mehrere Spalten verteilt sind? Standardfilter stoßen hier an ihre Grenzen, denn sie...
-
Power Query: E-Mail-Adressen aus Zeichenketten auslesen
Daten, die in Freitextfelder eingegeben wurden, enthalten oft Details, die gebraucht werden. Beispielsweise E-Mail-Adressen wie in der folgenden Abbildung. Doch wie lassen sich gezielt die E-Mail-Adressen aus diesen Daten auslesen?...
-
Sollten Excel-Einsteiger »Power Query« lernen?
Bisher hätte ich diese Frage eher mit Nein beantwortet. Doch dann kam letzte Woche dieser Excel-Einstiegskurs: Dort berichteten 4 von 7 Teilnehmern, dass sie nicht mit Excel arbeiten und es...