BLOG

Lesen Sie die neuesten Nachrichten von Billigence und aus der Welt der Technologie und Datenanalyse.
Vergessen Sie nicht, sie per E-Mail zu abonnieren.

RegEx im Alteryx-Designer

Das RegEx-Tool in der Alteryx-Plattform ist eine Komponente, die für die Suche nach Text oder die Überprüfung von in Formularen eingegebenen Daten oder das Parsen von Code verwendet wird. Ein regulärer Ausdruck ist eine Sammlung von zwei Arten von Zeichen – Literale (und damit ein Muster oder eine Maske), die in der Suchzeichenfolge vorhanden sein müssen, und Hilfszeichen, die erweiterte Suchmöglichkeiten bieten. Durch ihre Konfigurierbarkeit und Variabilität erhalten wir unbegrenzten Raum für die Arbeit mit Text, Zahlen und Sonderzeichen.

Was ist RegEx?

RegEx ist die Abkürzung für „Regulärer Ausdruck“ (manchmal auch als REGEXP oder rationale Ausdrücke bekannt), aber es ist hauptsächlich ein Prozess, bei dem eine Folge von Zeichen (Zahlen, Buchstaben, Symbol) in einem Text gefunden wird, die einer vordefinierten Vorlage/einem Muster entsprechen. Kommt Ihnen das bekannt vor? Falls nicht, stellen Sie sich die Funktion FIND (Strg+F) für die Textsuche vor. Sie funktioniert ähnlich, nur dass das Suchmuster durch die genauen Zeichen des Gesuchten definiert wird und nicht durch eine allgemeine Regel/Vorlage wie in RegEx.

Beispiel:

Wenn wir den Text „Ich arbeite seit 2020 bei einer BI-Firma namens Billigence“ haben und nach allen Zahlen oder Großbuchstaben suchen wollten, müssten wir mehrere Iterationen der Suche über FIND durchführen:

  • einmal für „A“, dann für „B“, „C“… „Y“, „Z“ und für Zahlen „0“, „1“… „9“ usw.),
  • Mit RegEx hingegen schreiben Sie einfach einen allgemeinen Eintrag

    [A-Z0-9]

    .

Wie Sie sehen können, ist RegEx ein allgemeines Muster für den Abgleich von Text (für weitere Details darüber, wie Abgleiche/Prinzipien und Syntax funktionieren und welche Möglichkeiten es gibt, „Bereiche“, „Gruppen“ und vieles mehr zu finden, empfehlen wir Ihnen, den vorherigen Blog zu lesen).

Was ist Alteryx Designer?

Alteryx ist ein Tool mit erstklassiger UX und Drag & Drop-Funktionalität, mit dem sich komplexe analytische Probleme auf einfache Weise lösen lassen, ohne dass Code geschrieben werden muss. Dank Alteryx haben auch Analysten oder Geschäftsanwender Zugang zu Data Science. Es handelt sich um eine Softwareanwendung, die auf der Windows-Plattform läuft und den Nutzern eine intuitive Benutzeroberfläche für die Erstellung von Daten-Workflows bietet. Das Ergebnis ist ein Prozess, der vordefinierte Aufgaben an den Eingabedaten durchführt, während die Ausgabe fertige Analysen oder nur vorbereitete Daten für die weitere Berichterstattung sein können. Nutzer können nach dem Drag & Drop-Prinzip die entsprechenden Komponenten aus dem Toolkit selbst verwenden, sie miteinander kombinieren, ihre Eigenschaften bearbeiten und Datenflüsse, Transformationen und sogar die Anwendung selbst, die den Transformationsprozess startet, erstellen. Der Vorteil von Alteryx Designer ist, dass es sich im Gegensatz zu anderen ETL-Tools mehr und tiefer auf Analysen und Data Science konzentriert.

Optionen für die Verwendung von RegEx-Ausdrücken im Alteryx Designer

Wie bereits erwähnt, verwendet Alteryx eigene Komponenten zur Erstellung von Workflows, von denen wir zwei im Detail beschreiben werden. Durch ihre Konfigurierbarkeit und Variabilität ergeben sich nahezu unendliche Möglichkeiten für die Arbeit mit Text, Zahlen und Sonderzeichen.

Zunächst werden wir uns die Komponente „RegEx-Werkzeug“ (im Folgenden „RegEx“) und anschließend die Komponente „Formel-Werkzeug“ (im Folgenden „Formel“) ansehen, die mit „RegEx-Funktionen“ arbeitet.

RegEx-Komponente

Diese Komponente ermöglicht es uns, auf natürliche Weise mit RegEx-Ausdrücken zu arbeiten und zu definieren, was im Falle einer Textübereinstimmung mit einem RegEx-Muster geschehen soll.

Im Grunde haben wir 4 Möglichkeiten, im Falle eines Kampfes zu handeln:

  • Ersetzen Sie
  • Tokenisieren
  • Parsen
  • Spiel

Schauen wir sie uns genauer an und zeigen wir ihre Verwendung anhand von Beispielen.

Ersetzen Sie

Übersetzt bedeutet es „ersetzen“, d. h. wenn es eine Übereinstimmung zwischen dem Text und dem RegEx-Ausdruck gibt, definiere ich, was ich durch was ersetzen möchte. Wenn ich den folgenden Text habe (Dateneingabe in die RegEx-Komponente) und das Kennwort ausblenden möchte (d.h. die Spalte „Kennwort“ durch Sternchen ersetzen), kann ich dies über diese Komponente tun, wobei ich definiere, dass jedes Zeichen (Buchstabe, Symbol, Leerzeichen, Zahl…) durch * ersetzt wird.

Hinweis: Anstelle des RegEx-Ausdrucks „. “ (Punkt) können auch andere Ausdrücke verwendet werden, aber da der Punkt für ein beliebiges Symbol steht, ist er für diese Operation am besten geeignet, insbesondere wenn das Kennwort Sonderzeichen enthält, z. B.: ,.*()§¨?:<>-„!’% und andere.

Dies ist eines von vielen Beispielen dafür, wie diese Funktion zur Bereinigung von Text verwendet werden kann.

  • Zum Beispiel. um die Sonderzeichen in der Zeichenfolge zu entfernen, würden wir „[^a-zA-Z0-9 ]“ verwenden, und der Ersatztext wäre der leere Text „“. Dadurch würden Leer- und Sonderzeichen usw. entfernt.

Beispiel:

haben wir einen Satz:

und die Verwendung des obigen Ausdrucks ändert ihn in: ,

(d.h. Löschen von Sonderzeichen und Leerzeichen)

Tokenisieren

Die zweite Option zum Einstellen der Komponente ist die Option „tokenisieren“, d. h. die die Textzeichenfolge entsprechend dem übereinstimmenden regulären Ausdruck in Spalten/Zeilen aufteilt (tokenisiert) und dabei die übereinstimmenden Werte aus dem Eingabetext in die neu erstellten Spalten/Zeilen zurückgibt. Im Gegensatz zur ähnlichen Alteryx-Komponente „TEXT TO COLUMNS“ liegt der Unterschied hier im Trennzeichen, das in der „Tokenize“-Funktion mehrere Zeichen statt nur einem enthalten kann. Für die RegEx-Komponente sind mehrere Zeichen zulässig. Das folgende Beispiel zeigt, wie die Tokenisierung funktioniert und was sie bewirkt.

Jede Webseite hat ihren eigenen HTML-Code, in dem sie geschrieben ist, und Links sind ebenfalls Teil dieser Syntax. Diese sind dadurch gekennzeichnet, dass sie den Tag „<und href>“ enthalten. Die folgende Abbildung zeigt, wie Sie diese Links leicht von www.billigence.com abrufen können . Der erste Schritt besteht darin, den Seitencode in ein Feld herunterzuladen.

Als Nächstes verbinden wir die „RegEx“-Komponente mit dem neu erstellten Datensatz mit der Spalte „DownloadData“ und konfigurieren die „Tokenize“-Funktion so, dass ich die Ergebnisse zur besseren Übersichtlichkeit in Zeilen statt in Spalten erhalten möchte. Parsen wir RegEx: <a href.*?>.*?</a>.

<und href – findet genau die Zeichen „<und href“

. – ein beliebiges Zeichen finden

*? -Finden Sie das vorherige Zeichen in der unbegrenzten Forschung

> – finden Sie genau „>“

.*? – vorherige Zeilen neu kombinieren (findet eine unbegrenzte Anzahl beliebiger Zeichen)

</a> – findet genau die Zeichenkette „</a>“

Die Abbildung zeigt uns, wie wir schnell und übersichtlich alle Links der Seite www.billigence.com abrufen können . In der Praxis könnte diese Funktion für einfaches Web-Scraping verwendet werden. Auch diese Funktion kann für andere Fälle verwendet werden, und das Beispiel dient zur Veranschaulichung der Anwendung.

Der Vollständigkeit halber möchte ich hinzufügen, dass, wenn wir für andere Beispiele das Ergebnis in Spalten statt in Zeilen lösen wollen, es notwendig ist, die genaue Anzahl der Spalten zu kennen, die manuell ausgefüllt werden müssen (max. 999), und dann gleichzeitig die Komponente „Datenbereinigung“ zu verwenden, um die überschüssigen leeren Spalten zu entfernen und möglicherweise über den Schalter „Transponieren“ in die Zeile zu wechseln. Daher ist es ratsam, sich im Voraus Gedanken darüber zu machen, wie wir das Ergebnis erfahren wollen, und alles rechtzeitig vorzubereiten.

Parsen

Diese Funktion ist der vorherigen sehr ähnlich, aber der Unterschied liegt in der unterschiedlichen Konfiguration der Komponente. Durch Auswahl der Aktion „Parse“ können wir unsere eigenen Spaltennamen (anstelle des Inkrements am Ende der Spalte) und deren Datentyp definieren, die uns für die weitere Verarbeitung geeignet sind.

Ein Beispiel hierfür wäre das „Bereinigen“ des folgenden Textes, aus dem ich nur die Namen der Benutzer erhalten möchte.

Ohne RegEx müssten wir prüfen, wie viele Zeichen die Ziffer im Text hat, und dann diese Anzahl von Zeichen minus 2 nehmen (ein Zeichen für die Ziffer und das zweite Zeichen für das Leerzeichen davor).

In Alteryx würde dieser Fall etwas klarer gehandhabt werden – siehe das Folgende.

Gleichzeitig fügen wir wieder die RegEx-Zerlegung hinzu: (^\D+), wobei jeder Teil bedeutet:

() – eine Gruppe von Zeichen, genannt. Bereich

^ – Beginn der Textzeichenfolge

\D – Zeichenbezeichnung, die keine Zahl ist

+ – Wiederholung des vorherigen Zeichens für 1 bis unbegrenzte Anzahl von Wiederholungen

Das Ergebnis gibt also die gesamte Textfolge zurück, bis das nächste Zeichen mit 0 bis 9 übereinstimmt.

Schließlich fügen wir hinzu, dass die resultierende Spalte noch von überflüssigen Leerzeichen befreit werden muss (die Funktion „TRIM“ in der Komponente „FORMEL“ oder in derselben Komponente die ersten Großbuchstaben setzen, da es sich um einen Namen handelt).

Spiel

Mit der letzten Aktion der RegEx-Komponentenoptionen können wir prüfen, ob der Suchtext mit dem RegEx-Ausdruck übereinstimmt. Die Ausgabe ist also „True“, wenn sie übereinstimmt, und „False“, wenn der Text nicht mit der RegEx-Formel übereinstimmt.

Das folgende Bild zeigt die RegEx-Komponente, die überprüft, ob die Telefonnummer in einem der folgenden Formate vorliegt (wenn wir ein anderes Telefonformat hinzufügen wollten, müssten wir das RegEx-Muster ändern).

Erlaubte Rufnummernformate:

Das Ergebnis der Validierung sieht wie folgt aus:

Lassen Sie uns die verschiedenen Teile von RegEx aufschlüsseln „\+\d{3}\s\d{3}\s\d{3}\s\d{3}\s*||(\d{3}\)\d{3}-\d{3}-\d{3}\s*|(\+\d{3}\)\d{3}-\d{3}\s\d{3}\s*|\+\d{12}\s*“

| – wird in RegEx für den logischen Operator oder (OR) verwendet, daher ist RegEx in 3 Gruppen unterteilt, die durch diesen Operator getrennt sind, die Gruppen verwenden die folgenden Teile von RegEx

\+ – nehmen Sie das „+“-Zeichen

\d{3} – nimm 3 beliebige Zahlen, in einer Reihe

\s – nehmen Sie ein Leerzeichen “ „

\s* – ggf. Leerzeichen “ “ nehmen

\( – eine linke Klammer nehmen

\) – eine rechte Klammer nehmen

– eine Prise nehmen

\d{12} – Nimm 12 beliebige Zahlen in einer Reihe.

Setzt man die obigen Teile zusammen, erhält man ein langes RegEx, das 3 OR-Operatoren enthält und RegEx auf die 4 zulässigen Formate überprüft (siehe unten):

\+\d{3}\s\d{3}\s\d{3}\s\d{3}\s*|

\(\d{3}\)\d{3}-\d{3}-\d{3}\s*|

\(\+\d{3}\)\d{3}-\d{3}\s\d{3}\s*|

\+\d{12}\s*

Bestandteil der Formel

In dieser Komponente können Sie benutzerdefinierte Datenbearbeitung unter Verwendung von Funktionen, benutzerdefinierten Variablen, Operatoren und vorhandenen Spalten schreiben. Wir werden uns auf die oben erwähnten RegExes konzentrieren. Sie werden durch 3 Funktionen repräsentiert, von denen zwei bereits besprochen wurden, aber wir werden trotzdem zeigen, wie sie in dieser Komponente verwendet werden.

REGEX_CountMatches

Dies ist eine Funktion, die nicht in der vorherigen Komponente enthalten ist. Ihre Aufgabe ist es, die Anzahl der Zeichen in der Zeile zu zählen, mit denen sie gemäß der RegEx-Formel übereinstimmen.
Wenn wir diese Funktion wünschen, müssen wir ihre Parameter beachten:

REGEX_Match(String , Muster, icase)

– Schnur
– Eingabetext, in dem RegEx suchen soll (kann eine vorhandene Spalte oder ein fester Text in Anführungszeichen sein)

– Muster
– RegEx-Formel, die in dem vorherigen Parameter suchen wird

– IKoffer
– gibt an, ob zwischen Groß- und Kleinschreibung unterschieden werden soll (Zahl „1“) oder ob sie ignoriert werden soll (Zahl „0“). Dieser Parameter ist optional, aber wenn er nicht angegeben wird, wird icase=0 angenommen, d.h. ignoriert den Fall.

Das Ergebnis in Abhängigkeit vom Parameter „Icase“ (Anzahl der übereinstimmenden Zeichen mit RegEx-) sieht wie folgt aus:

Wie Sie aus dem Ergebnis ersehen können, kann der Parameter „icase“ die Transformation völlig verändern, daher empfehle ich, ihn immer auszufüllen und nicht leer zu lassen, das wird Ihnen die Arbeit bei der Fehlersuche sicherlich erleichtern.

REGEX_Match

Diese Funktion ist wiederum ein Klon der vorherigen Komponente, und ihre „Match“-Aktion wertet aus, ob der gesamte Wert des Suchtextes mit dem RegEx-Muster übereinstimmt. Im Falle einer 100%igen Übereinstimmung ist der von dieser Funktion zurückgegebene Wert gleich „-1“ (Wahr), bei keiner Übereinstimmung gibt die Funktion den Wert „0“ (Falsch) zurück. Daher empfehlen wir, diese Funktion in einen IF zu verpacken und die Ausgänge zu modifizieren.

Die Funktion hat die Form REGEX_Match(String, pattern, icase) mit der folgenden Beschreibung der Parameter

– Schnur
– Eingabetext, in dem RegEx suchen soll (kann eine vorhandene Spalte oder ein fester Text in Anführungszeichen sein)

– Muster
– RegEx-Formel, die in dem vorherigen Parameter suchen wird

– IKoffer
(gibt an, ob Groß- und Kleinschreibung unterschieden (Zahl „1“) oder ignoriert werden soll (Zahl „0“). Dieser Parameter ist optional, aber wenn er nicht angegeben wird, wird icase=0 angenommen, d. h. ignoriert Groß- und Kleinschreibung)

Das Ergebnis der Übereinstimmung des Eingabetextes mit RegEx ist also TRUE (Wert -1) oder FALSE (Wert 0), zur besseren Übersicht haben wir die IF-Bedingung verwendet und den vollständigen Text des Ergebnisses hinzugefügt.

Nachfolgend ein weiteres Beispiel mit dem Parameter „icase“:

Bei der Aufteilung in Groß- und Kleinbuchstaben ergibt sich wiederum ein völlig anderes Ergebnis. In der zweiten Abbildung haben wir die zweite Spalte geändert, in der wir das Ergebnis der vorherigen Umwandlung verwenden, um den Code bei der Fehlersuche oder bei der Änderung des Codes besser lesen zu können; beide Varianten (-1,0 und True, False) sind jedoch in Ordnung.

REGEX_Ersetzen

Wir kennen diese Funktion aus der vorherigen Komponente, wo wir sie benutzt haben, um alle Zeichen des Eingabetextes durch ein Sternchen zu ersetzen und das Passwort zu verstecken (nur zur Visualisierung, nicht zum Ändern und Speichern)

Wenn wir diese Funktion in der Komponente „Formel“ verwenden wollen, müssen wir ihre Parameter erneut beachten.

REGEX_Replace(String, Muster, replace, icase)

– Schnur
– Eingabetext, in dem RegEx suchen soll (kann eine vorhandene Spalte oder ein fester Text in Anführungszeichen sein)

– Muster
– RegEx-Formel, die in dem vorherigen Parameter suchen wird

– Ersetzen
– Text/Zahl oder ein anderes Zeichen, das die RegEx-Übereinstimmung des vorherigen Parameters ersetzt

– IKoffer
(gibt an, ob Groß- und Kleinschreibung unterschieden (Zahl „1“) oder ignoriert werden soll (Zahl „0“). Dieser Parameter ist optional, aber wenn er nicht angegeben wird, wird icase=0 angenommen, d. h. ignoriert Groß- und Kleinschreibung)

Unten sehen Sie das Ergebnis, wie die Lösung aussehen würde, wenn ich die Abkürzung „usw.“ durch den vollwertigen Text „und dergleichen“ ersetzt. Die auf diese Weise erstellte Spalte wird nur für Werte aus der Spalte „[Popis článku]“ ausgeführt, für die es eine RegEx-Übereinstimmung gibt. Wenn es keine Übereinstimmung gibt, wird der Wert aus der ursprünglichen Spalte einfach in die Spalte kopiert.

Nun ein Beispiel ohne Verwendung des Parameters „icase“.

Auch hier können Sie sehen, wie sich der Parameter „icase“ auf die Ausgabe der Komponente auswirkt. Wie bei den vorangegangenen Funktionen wird dringend empfohlen, zur besseren Übersichtlichkeit einen optionalen Parameter anzugeben.

Zusammenfassung

Unter haben wir in diesem Blog die Möglichkeiten der Verwendung von RegEx-Ausdrücken in Alteryx gezeigt, und zwar die Komponente „RegEx-Tool“ mit Beispielen für alle 4 Aktionen, die mit diesem Tool möglich sind, und die Komponente „Formel“, in der wir 3 Funktionen gezeigt und beschrieben haben, einschließlich ihrer Verwendung und der Einstellung der richtigen Parameter. Zusammen mit den weiteren Möglichkeiten von , die Alteryx Designer bietet, können wir in relativ kurzer Zeit einen einzigartigen Transformationsprozess erstellen.

Autor des Artikels: Petr Holík, BI-Berater, Billigence

Lesen Sie auch

KATEGORIE