Power Query: Die Schreibweise von Straßennamen vereinheitlichen mit List.Accumulate

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:

Vorschau auf die Lösung mit vereinheitlichter Schreibweise der Straßennamen

Vorschau auf die Lösung mit vereinheitlichter Schreibweise der Straßennamen

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 Ausgangstabelle mit Straßennamen in unterschiedlichen Schreibweisen

Die Ausgangstabelle mit Straßennamen in unterschiedlichen Schreibweisen

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.

In einer Tabelle mit dem Namen Mapping werden alle typischen Ersetzungstexte hinterlegt

In einer Tabelle mit dem Namen Mapping werden alle typischen Ersetzungstexte hinterlegt

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 einer benutzerdefinierten Spalte werden mit List.Accumulate alle in der Mappingtabelle hinterlegten Ersetzungsvarianten durchlaufen

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

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.

Wer in Power Query Wissen aufbauen oder ausbauen möchte, findet hier passende Kurse:

Dieser Beitrag wurde unter Excel abgelegt und mit , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert