Abgleichen von Datensätzen mit AWS Lake Formation FindMatches - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abgleichen von Datensätzen mit AWS Lake Formation FindMatches

Anmerkung

Der Datensatzabgleich ist derzeit in den folgenden Regionen in der AWS Glue-Konsole nicht verfügbar: Naher Osten (VAE), Europa (Spanien) (eu-south-2) und Europa (Zürich) (eu-central-2).

AWS Lake Formation bietet Machine Learning-Funktionen zum Erstellen von benutzerdefinierten Transformationen zum Bereinigen Ihrer Daten. Derzeit ist eine Transformation mit dem Namen FindMatches verfügbar. Mithilfe der Transformation FindMatches können Sie doppelte oder übereinstimmende Datensätze in Ihrem Dataset identifizieren, auch wenn die Datensätze nicht über eine gemeinsame eindeutige Kennung verfügen und keine Felder exakt übereinstimmen. Hierfür müssen Sie weder Code schreiben noch wissen, wie Machine Learning funktioniert. FindMatches kann bei vielen verschiedenen Problemen nützlich sein, beispielsweise in folgenden Situationen:

  • Abgleichen von Kunden: Verknüpfen von Kundendatensätzen über verschiedene Kundendatenbanken hinweg, auch wenn viele Kundenfelder in den Datenbanken nicht exakt übereinstimmen (z. B. unterschiedliche Schreibweise der Namen, Adressunterschiede, fehlende oder ungenaue Daten usw.).

  • Abgleichen von Produkten: Abgleichen von Produkten in Ihrem Katalog mit anderen Produktquellen, beispielsweise des Produktkatalogs mit dem Katalog eines Wettbewerbers, wobei Einträge unterschiedlich strukturiert sind.

  • Verbesserung der Betrugserkennung: Identifizieren von doppelten Kundenkonten, um zu bestimmen, wann ein neu erstelltes Konto mit einem zuvor bekannten betrügerischen Benutzer übereinstimmt (oder übereinstimmen könnte).

  • Andere Übereinstimmungsprobleme: Übereinstimmung von Adressen, Filmen, Teilelisten usw. Allgemein gilt: Wenn ein Mensch Ihre Datenbankzeilen ansehen und feststellen könnte, dass sie übereinstimmen, ist die Chance groß, dass die FindMatches-Transformation Ihnen helfen kann.

Sie können diese Transformationen erstellen, wenn Sie einen Auftrag erstellen. Die von Ihnen erstellte Transformation basiert auf einem Quelldatenspeicherschema und Beispieldaten aus dem Quelldatensatz, denen Sie Labels zuweisen (wir bezeichnen diesen Prozess als „Trainieren” einer Transformation). Die von Ihnen mit einem Label versehenen Datensätze müssen im Quelldatensatz vorhanden sein. In diesem Prozess generieren wir eine Datei, die Sie labeln und dann wieder hochladen, woraus die Transformation in gewisser Weise lernen würde. Nachdem Sie Ihre Transformation gelehrt haben, können Sie sie von Ihrem Spark-basierten AWS Glue-Auftrag (PySpark oder Scala Spark) aufrufen und in anderen Skripten mit einem kompatiblen Quelldatenspeicher verwenden.

Erstellte Transformationen werden in AWS Glue gespeichert. In der AWS Glue Konsole können Sie die von Ihnen erstellten Transformationen verwalten. Im Navigationsbereich unter Datenintegration und ETL, Datenklassifizierungs-Tools > Datensatzabgleich, können Sie Ihre Machine-Learning-Transformation bearbeiten und weiter unterrichten. Weitere Informationen zum Verwalten von Transformationen in der Konsole finden Sie unter Arbeiten mit Machine Learning-Transformationen in der AWS Glue-Konsole.

Anmerkung

AWS Glue Version 2.0 FindMatchs-Aufträge verwenden den Amazon S3-Bucket aws-glue-temp-<accountID>-<region>, um temporäre Dateien zu speichern, während die Transformation Daten verarbeitet. Sie können diese Daten, nachdem die Ausführung abgeschlossen wurde, entweder manuell oder durch Festlegen einer Amazon S3-Lebenszyklusregel löschen.

Arten von Machine Learning-Transformationen

Sie können Machine Learning-Transformationen erstellen, um Ihre Daten zu bereinigen. Sie können diese Transformationen aus Ihrem ETL-Skript heraus aufrufen. Ihre Daten werden in einer Datenstruktur namens DynamicFrame von Transformation zu Transformation übergeben (eine Erweiterung für ein Apache Spark SQL DataFrame). Der DynamicFrame enthält Ihre Daten und Sie verweisen auf das Schema, um Ihre Daten zu verarbeiten.

Die folgenden Arten von Machine Learning-Transformationen sind verfügbar:

Suche nach Übereinstimmungen

Sucht doppelte Datensätze in den Quelldaten. Zum Trainieren dieser Machine Learning-Transformation kennzeichnen Sie durch entsprechendes Labeling von Beispieldatensätzen, welche Zeilen übereinstimmen. Die Machine Learning-Transformation lernt immer besser, welche Zeilen Übereinstimmungen darstellen sollten, je mehr Sie sie mit gelabelten Beispieldaten trainieren. Abhängig davon, wie Sie die Transformation konfigurieren, ist eine der folgenden Ausgaben möglich:

  • Eine Kopie der Eingabetabelle sowie eine match_id-Spalte mit Werten, die übereinstimmende Gruppen von Datensätzen angeben. Die match_id-Spalte ist ein beliebiger Bezeichner. Alle Datensätze mit derselben match_id wurden als übereinstimmend identifiziert. Datensätze mit anderer match_idstimmen nicht überein.

  • Eine Kopie der Eingabetabelle, in der doppelte Zeilen entfernt wurden. Wenn mehrere Duplikate gefunden werden, wird der Datensatz mit dem niedrigsten Primärschlüssel beibehalten.

Inkrementelle Übereinstimmungen finden

Die Transformation „Übereinstimmungen suchen“ kann auch konfiguriert werden, um Übereinstimmungen in den vorhandenen und inkrementellen Frames zu finden und als Ausgabe eine Spalte zurückzugeben, die eine eindeutige ID pro Übereinstimmungsgruppe enthält.

Weitere Informationen finden Sie unter: Inkrementelle Übereinstimmungen finden

Verwendung der FindMatches-Transformation

Sie können mit der FindMatches-Transformation nach doppelten Datensätzen in den Quelldaten suchen. Zur Unterstützung beim Trainieren der Transformation wird eine Labeling-Datei generiert oder zur Verfügung gestellt.

Anmerkung

Derzeit werden FindMatches-Transformationen, die einen benutzerdefinierten Verschlüsselungsschlüssel verwenden, in den folgenden Regionen nicht unterstützt:

  • Asien Pazifik (Osaka) – ap-northeast-3

Um mit der FindMatches-Transformation zu beginnen, können Sie die folgenden Schritte ausführen. Ein ausführlicheres und detaillierteres Beispiel finden Sie im Big-Data-Blog von AWS: Harmonisieren von Daten mithilfe von AWS Glue- und AWS Lake Formation-FindMatches ML zur Erstellung einer 360-Grad-Kundenansicht.

Erste Schritte mit der Transformation zur Suche nach Übereinstimmungen

Führen Sie als Einstieg in die FindMatches-Transformation die folgenden Schritte aus:

  1. Erstellen Sie im AWS Glue Data Catalog eine Tabelle für die Quelldaten, die bereinigt werden sollen. Weitere Informationen zum Erstellen eines Crawlers finden Sie unter Arbeiten mit Crawlern in der AWS Glue-Konsole.

    Wenn es sich bei Ihren Quelldaten um eine textbasierte Datei handelt, wie z. B. eine CSV-Datei (durch Kommas voneinander getrennte Werte), berücksichtigen Sie Folgendes:

    • Bewahren Sie die CSV-Datei Ihres Eingabedatensatzes und die Labeling-Datei in separaten Ordnern auf. Andernfalls sieht der AWS Glue-Crawler sie möglicherweise als mehrere Teile derselben Tabelle an und legt die Tabellen in Data Catalog nicht richtig an.

    • Außer für CSV-Dateien, die ausschließlich ASCII-Zeichen enthalten, stellen Sie sicher, dass für die CSV-Dateien UTF-8 ohne BOM-Codierung (Byte Order Mark, Markierung der Bytereihenfolge) verwendet wird. Microsoft Excel fügt am Anfang der UTF-8-CSV-Dateien häufig eine BOM ein. Um diese zu entfernen, öffnen Sie die CSV-Datei in einem Texteditor und speichern Sie sie mit der Option UTF-8 without BOM (UTF-8 ohne BOM) neu.

  2. Erstellen Sie in der AWS Glue-Konsole einen Auftrag und wählen Sie als Transformationstyp Find matches (Übereinstimmungen suchen) aus.

    Wichtig

    Die Datenquellentabelle, die Sie für den Auftrag auswählen, darf nicht mehr als 100 Spalten enthalten.

  3. Weisen Sie AWS Glue an, eine Labeling-Datei zu generieren, indem Sie Generate labeling file (Labeling-Datei generieren) auswählen. AWS Glue verwendet den ersten Durchgang bei der Gruppierung ähnlicher Datensätze für jede labeling_set_id, sodass Sie diese Gruppierungen überprüfen können. Sie kennzeichnen Übereinstimmungen in der Spalte label.

    • Wenn Sie bereits über eine Labeling-Datei, also ein Beispiel von Datensätzen mit übereinstimmenden Zeilen, verfügen, laden Sie die Datei in Amazon Simple Storage Service (Amazon S3) hoch. Weitere Informationen über das Format der Labeling-Datei finden Sie unter Format der Labeling-Datei. Fahren Sie mit Schritt 4 fort.

  4. Laden Sie die Labeling-Datei herunter und labeln Sie die Datei wie im Abschnitt Labeling beschrieben.

  5. Laden Sie die korrigierte Labeling-Datei hoch. AWS Glue führt Aufgaben zum Trainieren der Transformation in Bezug auf die Suche nach Übereinstimmungen aus.

    Wählen Sie auf der Seite mit der Liste Machine learning transforms (Maschine Learning-Transformationen) die Registerkarte History (Verlauf) aus. Diese Seite gibt an, wann AWS Glue die folgenden Aufgaben ausführt:

    • Import labels (Labels importieren)

    • Export labels (Labels exportieren)

    • Generate labels (Labels generieren)

    • Estimate quality (Qualität beurteilen)

  6. Um eine bessere Transformation zu erstellen, können Sie die gelabelte Datei iterativ herunterladen, kennzeichnen und wieder hochladen. Bei den anfänglichen Ausführungen werden möglicherweise sehr viel mehr Datensätze falsch zugeordnet. Aber Sie können die Lernfähigkeit von AWS Glue durch fortgesetztes Überprüfen der Labeling-Datei trainieren.

  7. Beurteilen und optimieren Sie Ihre Transformation, indem Sie die Leistung und Ergebnisse der Suche nach Übereinstimmungen beurteilen. Weitere Informationen finden Sie unter Optimieren von Machine Learning-Transformationen in AWS Glue.

Labeling

Wenn FindMatches eine Labeling-Datei generiert, werden Datensätze aus Ihrer Quelltabelle ausgewählt. FindMatches erkennt basierend auf vorherigem Training die wertvollsten Datensätze, von denen es lernen kann.

Unter Labeling ist das Bearbeiten einer Labeling-Datei (z. B. einer Tabellenkalkulation wie aus Microsoft Excel) und das Hinzufügen von Kennungen oder Labels zur Spalte label zu verstehen, in der übereinstimmende und nicht übereinstimmende Datensätze identifiziert werden. Es ist wichtig, dass in Ihren Quelldaten klar und konsistent definiert ist, woran eine Übereinstimmung zu erkennen ist. FindMatches lernt davon, welche Datensätze von Ihnen als Übereinstimmungen angesehen werden, sowie anhand Ihrer Entscheidungen, wie doppelte Datensätze zu finden sind.

Wenn eine Labeling-Datei von FindMatches geniert wird, werden ca. 100 Datensätze angelegt. Diese 100 Datensätze sind in der Regel in 10 Labeling-Sätze unterteilt, wobei jeder Labeling-Satz durch eine eindeutige labeling_set_id identifiziert wird, die von FindMatches generiert wird. Jeder Labeling-Satz sollte unabhängig von den anderen Labeling-Sätzen als separate Labeling-Aufgabe betrachtet werden. Ihre Aufgabe besteht darin, übereinstimmende und nicht übereinstimmende Datensätze innerhalb jedes Labeling-Satzes zu identifizieren.

Tipps zum Bearbeiten von Labeling-Dateien in einer Tabellenkalkulation

Beim Bearbeiten der Labeling-Datei in einer Tabellenkalkulationsanwendung sollten Sie Folgendes berücksichtigen:

  • Die Datei wird möglicherweise nicht mit vollständig erweiterten Spaltenfeldern geöffnet. Sie müssen möglicherweise die Spalten labeling_set_id und label erweitern, um den Inhalt in diesen Zellen sichtbar zu machen.

  • Wenn die Primärschlüsselspalte eine Zahl ist, z. B. ein long-Datentyp, legt die Kalkulationstabelle sie möglicherweise als Zahl aus und ändert den Wert. Dieser Schlüssewertl muss als Text behandelt werden. Um dieses Problem zu beheben, formatieren Sie alle Zellen in der Primärschlüsselspalte als Text data (Textdaten).

Format der Labeling-Datei

Die Labeling-Datei, die von AWS Glue generiert wird, um Ihre FindMatches-Transformation zu trainieren, verwendet das folgende Format. Wenn Sie Ihre eigene Datei für AWS Glue generieren, muss sie ebenfalls diesem Format folgen:

  • Sie ist eine CSV-Datei (durch Kommas voneinander getrennte Werte).

  • Sie muss in UTF-8 codiert sein. Wenn Sie die Datei mit Microsoft Windows bearbeiten, wird sie möglicherweise mit cp1252 codiert.

  • Sie muss sich an einem Amazon-S3-Speicherort befinden, damit sie an AWS Glue übergeben werden kann.

  • Sie sollten eine moderate Anzahl an Zeilen für jede Labeling-Aufgabe verwenden. Es werden 10–20 Zeilen pro Aufgabe empfohlen, obwohl 2–30 Zeilen pro Aufgabe zulässig sind. Aufgaben, die größer als 50 Zeilen sind, werden nicht empfohlen und können zu schlechten Ergebnissen oder Systemausfällen führen.

  • Wenn Sie bereits Daten mit Labeling haben, die aus Paaren von Datensätzen bestehen, die als „Übereinstimmung“ oder „Keine Übereinstimmung“ gekennzeichnet sind, ist dies in Ordnung. Diese Paare mit Labeling können als Labeling-Sätze der Größe 2 dargestellt werden. Bezeichnen Sie in diesem Fall beide Datensätze beispielsweise mit dem Buchstaben „A“, wenn sie übereinstimmen, aber bezeichnen Sie einen als „A“ und einen als „B“, wenn sie nicht übereinstimmen.

    Anmerkung

    Aufgrund ihrer zusätzlichen Spalten weist die Labeling-Datei ein anderes Schema als die Datei mit den Quelldaten auf. Platzieren Sie die Labeling-Datei in einem anderen Ordner als die CSV-Eingabedatei der Transformation, sodass der AWS Glue-Crawler sie beim Erstellen von Tabellen in Data Catalog nicht berücksichtigt. Andernfalls repräsentieren die vom AWS Glue-Crawler erstellten Tabellen Ihre Daten möglicherweise nicht richtig.

  • Die ersten beiden Spalten (labeling_set_id, label) werden für AWS Glue benötigt. Die verbleibenden Spalten müssen mit dem Schema der zu verarbeitenden Daten übereinstimmen.

  • Sie identifizieren für jede labeling_set_id alle übereinstimmenden Datensätze unter Verwendung desselben Labels. Ein Label ist eine eindeutige Zeichenfolge, die in die Spalte label platziert wird. Wir raten zur Verwendung von Labels mit einfachen Zeichen, z. B. A, B, C usw. Labels unterscheiden zwischen Groß- und Kleinschreibung und werden in die Spalte label eingegeben.

  • Zeilen, die dieselbe labeling_set_id und dasselbe Label enthalten, werden als Übereinstimmung bezeichnet.

  • Zeilen, die dieselbe labeling_set_id und ein anderes Label enthalten, werden als nicht übereinstimmend bezeichnet.

  • Zeilen, die eine andere labeling_set_id enthalten, werden so gewertet, dass sie keine Informationen für oder gegen eine Übereinstimmung enthalten.

    Nachfolgend finden Sie ein Beispiel für das Kennzeichnen der Daten mit Labels:

    labeling_set_id Bezeichnung first_name last_name Geburtstag
    ABC123 A John Doe 01.04.1980
    ABC123 B Jane Smith 03.04.1980
    ABC123 A Johnny Doe 01.04.1980
    ABC123 A Jon Doe 01.04.1980
    DEF345 A Richard Jones 11.12.1992
    DEF345 A Rich Jones 12.11.1992
    DEF345 B Sarah Jones 11.12.1992
    DEF345 C Richie Jones Jr. 06.05.2017
    DEF345 B Sarah Jones-Walker 11.12.1992
    GHI678 A Robert Miller 03.01.1999
    GHI678 A Bob Miller 03.01.1999
    XYZABC A Wilhelm Robinson 05.02.2001
    XYZABC B Andreas Robinson 05.02.1971
  • Im obigen Beispiel identifizieren wir John/Johnny/Jon Doe als Übereinstimmung und teilen dem System mit, dass diese Datensätze nicht mit Jane Smith übereinstimmen. Separat teilen wir dem System mit, dass Richard und Rich Jones die gleiche Person sind, aber dass diese Datensätze nicht mit Sarah Jones/Jones-Walker und Richie Jones Jr. übereinstimmen.

  • Wie Sie sehen, ist der Umfang der Labels auf die labeling_set_id beschränkt. Labels überschreiten daher keine labeling_set_id-Grenzen. Beispiel: Label „A“ für labeling_set_id 1 hat keinen Bezug zu Label „A“ für labeling_set_id 2.

  • Wenn ein Datensatz keine Übereinstimmungen innerhalb eines Labeling-Satzes enthält, weisen Sie ihm ein eindeutiges Label zu. Beispielsweise stimmt Jane Smith mit keinem Datensatz im Labeling-Satz ABC123 überein, daher ist dies der einzige Datensatz in diesem Labeling-Satz mit dem Label B.

  • Der Labeling-Satz „GHI678" zeigt, dass ein Labeling-Satz aus nur zwei Datensätzen bestehen kann, die mit dem gleichen Label versehen sind, um zu zeigen, dass sie übereinstimmen. Ähnlich zeigt „XYZABC“ zwei Datensätze mit unterschiedlichen Labels, um zu zeigen, dass sie nicht übereinstimmen.

  • Beachten Sie, dass manchmal ein Labeling-Satz keine Übereinstimmungen enthalten kann (d. h. Sie geben jedem Datensatz im Labeling-Satz ein anderes Label), oder ein Labeling-Satz könnte „alle gleich“ sein (Sie haben allen das gleiche Label gegeben). Dies ist in Ordnung, solange Ihre Labeling-Sätze zusammen Beispiele für Datensätze enthalten, die nach Ihren Kriterien „identisch“ sind und nicht.

Wichtig

Vergewissern Sie sich, dass die IAM-Rolle, die Sie an AWS Glue übergeben, Zugriff auf den Amazon-S3-Bucket mit der Labeling-Datei hat. Laut Konvention erteilen AWS Glue-Richtlinien die Berechtigung für Amazon-S3-Buckets oder -Ordner, deren Namen das Präfix aws-glue- enthalten. Wenn sich die Labeling-Dateien an einem anderen Speicherort befinden, fügen Sie der IAM-Rolle die Berechtigung für diesen Speicherort hinzu.