Free Trial

Forum - Deutsch

Suchen Sie nach Antworten, stellen Sie Fragen und teilen Sie Ihr Alteryx-Wissen.

Textdaten aufteilen

akku
Bolide

Hallo Forum,

 

ich habe mal wieder ein Spezialproblem und hoffe auf Hilfe.

 

Ich habe Daten, die ich gerne in Spalten aufteilen möchte. Leider gibt es keinen eindeutigen Trenner.

 

Beispiel 1:

Dortmund - Dorstfeld Varusstr. 7

soll aufgeteilt werden in Ort: Dortmund - Dorstfeld, Strasse: Varusstr., Hausnummer: 7

 

Beispiel 2:

Dortmund Varusstr. 7

soll aufgeteilt werden in Ort: Dortmund, Strasse: Varusstr., Hausnummer: 7

 

Beispiel 3:

Dortmund Böblinger Strasse 9

soll aufgeteilt werden in Ort: Dortmund, Strasse: Böblinger Strasse, Hausnummer: 9

 

Beispiel 4

Mannheim R 7, 27        oder   Mannheim R7, 27      oder    Mannheim R 7 27

soll aufgeteilt werden in Ort: Mannheim, Strasse: R7 (oder R 7), Hausnummer: 27

 

 

Den Rest der Daten habe ich mit STRSPN bzw SPRCSPN aufgeteilt, wie im Dienstags-Tipp von @RolandSchubert beschrieben.

Da ist es gut beschriebn und klappt auch soweit. Allerdngs nicht bei diesen 'komischen' Adressen.

Gibt es hierzu Ideen?

 

Gruß

Matthias

1 ANTWORT 1
grossal
15 - Aurora
15 - Aurora

Hallo @akku,

 

ich bin gerade leider im Urlaub, deswegen werde ich diesmal auf explizite Formeln verzichten, aber ich gebe dir gerne schon mal meine Vorgehensweise mit auf den Weg. 

 

Eine triviale Lösung gibt es hier, wie du selbst erkannt hast, leider nicht - aber ich glaube wir können das Problem in mehrere kleinere Problem zerlegen, so dass die Ergebnisse trotzdem okay sein sollten.

 

1) Hausnummer

Ich glaube es ist das leichteste mit der Hausnummer zu beginnen. Dies würde ich mit einem Regex machen. Ich denke hier an so etwas wie .*(\d+)$ - vermutlich musst du allerdings noch hinter dem \d+ das Zeichen für Buchstaben hinzufügen und dieses mit einem Fragezeichen optional setzen damit ggf. auch Hausnummer wie 1a richtig erkannt werden. Eventuell ist sogar .*\s\d+\D*$ möglich, aber das müsste ich ausprobieren um es zu verifizieren. Egal wie man es genau macht, ich glaube es ist immer am leichtesten zuerst die Hausnummer herauszufinden.

 

2) Spezialfall 0: Stadt immer vorne

Im Beispiel macht es den Anschein als würde die Stadt immer als allererstes genannt sein. Sollte dies zutreffen, wäre es ein leichtes das erste Wort immer als Stadt zu deklarieren und alles was nicht Hausnummer oder Stadt ist, ist dann eben die Straße.

 

3) Spezialfall 1: Nur noch "ein Leerzeichen"

Wenn danach nur noch zwei mit einem Leerzeichen getrennte Worte enthalten sind, dann kann man davon ausgehen, dass das erste die Stadt und das zweite die Straße ist. Wäre ebenso mit Regex möglich, aber auch mit Filter + Text-To-Columns

 

4) Spezialfall 2: "str" oder "straße" (ggf. auch Endungen wie 'weg', etc)

Hört ein Wort mit str, straße oder weg auf, so ist davon auszugehen, dass dies die Straße ist .

 

5) Weitere Regeln

Vermutlich wird das nicht reichen, aber in einem ersten Schritt solltest du damit mal einen Startpunkt haben. So etwas ist idR ein iterativer Prozess bei dem man nach und nach die Regeln verfeinert und/oder die Daten verbessert. 

 

Ich hatte mal ein ähnliches Szenario bei einem Pharma-Kunden bei dem wir am Ende des Tages 20-30 Regeln hatten - und trotzdem musste/wurde jedes Ergebnis händisch validiert. Doch auch das hat bereits Zeiteinsparungen von mehreren 100 Stunden herbeigeführt, weil wir eine 80% Quote hatten das Ergebnis bereits richtig getrennt zu haben. 

 

Alternativ kann man heutzutage natürlich auch immer über den Einsatz von Machine Learning nachdenken - allerdings würde ich hier von ChatGPT abraten - da dadurch auch die Daten über das Internet an OpenAI übermittelt werden, jedoch gibt es auch erste vortrainierte Neuronale Netze welche lokal deployed werden können - allerdings ist dafür eine Person mit ein wenig Entwickler-Background nötig.

 

Viele Grüße aus der Sonne

Alex

 

 

 

Beschriftungen