FUZZYDUP-Befehl
Konzept-Informationen
Sucht nahezu identische Werte (Fuzzy-Duplikate) in einem Zeichenfeld.
Hinweis
Verwenden Sie die Fuzzy-Übereinstimmung, um Felder aus zwei Analytics-Tabellen in einer neuen einzelnen Analytics-Tabelle zu vereinen. Siehe FUZZYJOIN-Befehl.AnalyticsAnalytics
Syntax
FUZZYDUP ON Schlüsselfeld <OTHER Feld <...n>|OTHER ALL <EXCLUDE Feldname <...n>>> LEVDISTANCE Wert <DIFFPCT Prozentsatz> <RESULTSIZE Prozentsatz> <EXACT> <IF Test> TO Tabellenname <LOCAL> <OPEN>
Parameter
| Name | Beschreibung |
|---|---|
| ON Schlüsselfeld | Das auf Fuzzy-Duplikate zu prüfende Zeichenfeld oder der Ausdruck. |
| OTHER Feld <...n> | OTHER ALL Optional |
Ein oder mehrere weitere Felder zum Einfügen in die Ausgabe.
|
| EXCLUDE Feldname Optional |
Nur bei der Verwendung von OTHER ALL gültig. Die Felder, die von dem Befehl ausgeschlossen werden sollen. Durch EXCLUDE können Sie eine Feinanpassung von OTHER ALL vornehmen, indem Sie die angegebenen Felder ausschließen. EXCLUDE muss unmittelbar nach OTHER ALL angegeben werden. Beispiel: OTHER ALL EXCLUDE Feld_1 Feld_2 |
| LEVDISTANCE Wert |
Die maximal zulässige Levenshtein-Distanz zwischen zwei Zeichenfolgen, damit diese als Fuzzy-Duplikate identifiziert und in die Ergebnisse eingeschlossen werden. Der LEVDISTANCE-Wert darf nicht kleiner als 1 oder größer als 10 sein. Bei einer Erhöhung des LEVDISTANCE -Werts erhöht sich die maximal zulässige Levenshtein-Distanz, was zu einer größeren Menge an Ergebnissen führt, da Werte mit einer größeren Differenz einbezogen werden. Weitere Informationen finden Sie unter FUZZYDUP-Verhalten. |
|
DIFFPCT Prozentsatz Optional |
Ein Grenzwert, der den „Differenzprozentsatz“ oder den Anteil einer Zeichenfolge beschränkt, der verschieden sein kann. Der Prozentsatz, der sich aus einer internen Analytics-Berechnung für potenzielle Paare von Fuzzy-Duplikaten ergibt, muss kleiner oder gleich dem DIFFPCT-Wert sein, damit das Paar in die Ausgabeergebnisse eingeschlossen wird. Der DIFFPCT-Wert darf nicht kleiner als 1 oder größer als 99 sein. Beim Auslassen von DIFFPCT wird der Grenzwert deaktiviert und der Differenzprozentsatz wird beim Verarbeiten des FUZZYDUP-Befehls nicht berücksichtigt. Weitere Informationen finden Sie unter FUZZYDUP-Verhalten. |
| RESULTSIZE Prozentsatz Optional |
Die maximale Größe der Menge aus Ausgabeergebnissen als Prozentsatz der Datensatzanzahl im Schlüsselfeld. Für ein Schlüsselfeld mit beispielsweise 50.000 Datensätzen würde RESULTSIZE von 3 die Verarbeitung beenden, sobald die Ergebnisse einen Umfang von 1.500 Fuzzy-Duplikaten (50.000 x 0,03) übersteigen. Wenn der Verarbeitung beendet wird, wird keine Ausgabetabelle erstellt. Der RESULTSIZE-Wert darf nicht kleiner als 1 oder größer als 1000 (eintausend) Prozent sein. Die Grenze von 1000% ermöglicht einen n:n-Abgleich, bei dem die Ergebnisse die Anzahl der Einträge im ursprünglichen Testdataset überschreiten können. Beim Auslassen von RESULTSIZE wird der Grenzwert deaktivert, und die Ergebnisgröße wird beim Verarbeiten des FUZZYDUP-Befehls nicht berücksichtigt. Achtung Das Auslassen von RESULTSIZE kann zu übermäßig großen Ergebnismengen und einer sehr langen Verarbeitungszeit führen, oder es tritt möglicherweise der Fall ein, dass der verfügbare Speicherplatz ausgeschöpft ist und die Verarbeitung beendet wird. Lassen Sie RESULTSIZE nur aus, wenn Sie zuversichtlich sind, dass die Ergebnisse eine überschaubare Größe haben werden. |
|
EXACT Optional |
Schließt neben exakten Duplikaten auch Fuzzy-Duplikate in die Ausgabeergebnisse ein. |
|
IF Test Optional |
Ein bedingter Ausdruck, der wahr sein muss, damit ein Datensatz verarbeitet wird. Der Befehl wird nur für Datensätze ausgeführt, welche die Bedingung erfüllen. Hinweis Der IF-Parameter wird nur für Datensätze ausgewertet, die nach Anwendung von Bereichsparametern (WHILE, FIRST, NEXT) in einer Tabelle übrig sind. |
|
TO Tabellenname |
Der Ort, an den die Ergebnisse des Befehls gesendet werden sollen:
|
|
LOCAL Optional |
Speichert die Ausgabedatei am selben Speicherort wie das Analytics-Projekt. Hinweis Nur anwendbar, wenn der Befehl für eine Servertabelle ausgeführt wird und die Ausgabedatei eine Analytics-Tabelle ist. Der LOCAL-Parameter muss unmittelbar auf den TO-Parameter folgen. |
|
OPEN Optional |
Öffnet die durch den Befehl erstellte Tabelle, nachdem der Befehl ausgeführt wird. Nur gültig, wenn der Befehl eine Ausgabetabelle erstellt. |
Analytics-Ausgabevariablen
| Name | Enthält |
|---|---|
| GAPDUPn |
Die Gesamtanzahl an Lücken, Duplikaten oder Gruppen von Fuzzy-Duplikaten, die durch den Befehl identifiziert werden. |
Beispiele
Nachnamefeld auf Fuzzy-Duplikate testen
Sie testen ein Nachnamefeld auf Fuzzy-Duplikate (das Feld Nachname in der Tabelle Mitarbeiterliste unter ACL DATA\Beispiel-Datendateien\Metaphor-Mitarbeiterdaten.ACL). Die Ergebnisse werden in einer neuen Analytics-Tabelle ausgegeben.
- Neben dem Testfeld werden weitere Felder in die Ausgabeergebnisse eingeschlossen.
- Die maximal zulässige Levenshtein-Distanz beträgt 1.
- Der Anteil einer Zeichenfolge, der sich unterscheiden darf, ist auf 50 % begrenzt.
- Die Größe der Ergebnismenge ist auf 20 % der Testfeldgröße begrenzt.
- Neben Fuzzy-Duplikaten werden auch exakte Duplikate eingeschlossen.
OPEN Mitarbeiterliste
FUZZYDUP ON Nachname OTHER Vorname Angest_Nr LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Fuzzy_Nachname" OPEN
Bemerkungen
Funktionsweise
Mit dem FUZZYDUP-Befehl können Sie nahezu identische Werte (Fuzzy-Duplikate) finden oder eine uneinheitliche Buchstabierung in manuell eingegebenen Daten lokalisieren.
Im Gegensatz zur ISFUZZYDUP( )-Funktion, mit der eine vollständige Liste von Fuzzy-Duplikaten für einen einzelnen Zeichenwert ermittelt wird, identifiziert der FUZZYDUP-Befehl alle Fuzzy-Duplikate in einem Feld, organisiert diese in unvollständigen Gruppen und gibt eine Ergebnismenge aus.
Genaue Informationen über die Funktionsweise dieses Befehls finden Sie unter Fuzzy-Duplikate-Analyse.
Was „unvollständig“ bedeutet
Unvollständig bedeutet, dass einzelne Gruppen von Fuzzy-Duplikaten in den Ausgabeergebnissen möglicherweise nicht alle Fuzzy-Duplikate eines Testfelds enthalten, die den festgelegten Differenzgrad zum Gruppeneigentümer aufweisen. Wenn ein Gruppeneigentümer jedoch ein Fuzzy-Duplikat eines anderen Werts im Testfeld ist, werden die beiden Werte zusammen in einer Gruppe in den Ausgabeergebnissen angezeigt. Die Gruppen sind unter Umständen nicht erschöpfend, die Ergebnisse insgesamt sind es jedoch.
Verwenden Sie die ISFUZZYDUP( )-Funktion, wenn Sie zur Analyse eine einzige vollständige Liste der Fuzzy-Duplikate für einen bestimmten Wert im Testfeld erstellen möchten.
FUZZYDUP-Verhalten
Der FUZZYDUP-Befehl weist zwei Parameter auf, die Sie angeben können, um den Unterschied zwischen Fuzzy-Duplikaten sowie den Umfang der Ausgabeergebnisse zu steuern.
- LEVDISTANCE
- DIFFPCT
Sie sollten möglicherweise unterschiedliche Kombinationen der beiden Parameter testen, um zu ermitteln, welche Einstellung für ein bestimmtes Dataset am besten funktioniert.
LEVDISTANCE (Levenshtein-Distanz)
Beim Verarbeiten von Daten berechnet der FUZZYDUP-Befehl die Levenshtein-Distanz zwischen jedem ausgewerteten Zeichenfolgenpaar im Testfeld sowie den Differenzprozentsatz. Die Levenshtein-Distanz ist ein Wert, der die Mindestzahl von Bearbeitungen einzelner Zeichen darstellt, die erforderlich sind, um eine Zeichenfolge an eine andere anzugleichen. Weitere Informationen finden Sie unter LEVDIST( )-Funktion.
DIFFPCT (Differenzprozentsatz)
Der Differenzprozentsatz ist der Prozentsatz des Unterschieds der kürzeren der beiden ausgewerteten Zeichenfolgen. Er ergibt sich aus der folgenden internen Analytics-Berechnung, die die Levenshtein-Distanz zwischen den beiden Zeichenfolgen verwendet:
Levenshtein-Distanz/Anzahl der Zeichen in der kürzeren Zeichenfolge × 100 = Differenzprozentsatz
Weitere Informationen
Ausführliche Informationen über die Differenzeinstellungen der Fuzzy-Duplikate, das Steuern der Ergebnisgröße sowie Gruppen von Fuzzy-Duplikaten finden Sie unter Fuzzy-Duplikate-Analyse.
Unterscheidung von Groß- und Kleinschreibung
Der FUZZYDUP Befehl berücksichtigt die Groß- und Kleinschreibung nicht, sodass beispielsweise „SCHMIDT“ und „Schmidt“ gleichwertig sind.
Nachgestellte Leerzeichen automatisch kürzen
Der FUZZYDUP-Befehl schneidet nachgestellte Leerzeichen im Schlüsselfeld automatisch ab, sodass die TRIM( )- oder ALLTRIM( )-Funktionen nicht verwendet werden müssen, wenn ein einzelnes Feld in Schlüsselfeld angegeben wird.
Wenn Sie Felder im Schlüsselfeld verketten, sollten Sie ALLTRIM( ) wie unten dargestellt verwenden.
Wirkung von FUZZYDUP verbessern
Drei Techniken können die Wirksamkeit des FUZZYDUP-Befehls beträchtlich steigern:
- einzelne Elemente in Testfeldwerten sortieren
- generische Elemente aus Testfeldwerten entfernen
- Testfelder verketten
Diese Techniken führen zu fokussierteren Wertemengen mit weniger Falschmeldungen und mehr korrekten Ergebnissen. Sie können die Techniken separat oder zusammen verwenden.
Einzelne Elemente in Testfeldwerten sortieren
Die Funktion SORTWORDS( ) kann die Wirksamkeit des FUZZYDUP-Befehls verbessern, indem sie einzelne Elemente von Testfeldwerten sequenziell sortiert.
Durch das Sortieren von Elementen, zum Beispiel Komponenten einer Adresse, ist es möglich, dass sich zwei Zeichenfolgen mit denselben Informationen, die ein unterschiedliches Format aufweisen, stärker angleichen. Eine stärkere Angleichung steigert die Wahrscheinlichkeit, dass Zeichenfolgen als Fuzzy-Duplikate ausgewählt werden.
Weitere Informationen finden Sie unter SORTWORDS( )-Funktion.
Das Video Fuzzy Matching Using SORTWORDS() (Fuzzy-Übereinstimmungen mit SORTWORDS, nur auf Englisch) verschafft Ihnen einen Überblick zu SORTWORDS().
Generische Elemente aus Testfeldwerten entfernen
Die OMIT( )-Funktion kann die Effektivität des FUZZYDUP-Befehls verbessern, indem generische Elemente wie „GmbH“ oder „AG“ bzw. Zeichen wie Kommas, Punkte und das Kaufmannsund (&) aus den Testfeldwerten entfernt werden.
Durch das Entfernen generischer Elemente und Satzzeichen konzentriert sich der Zeichenfolgenvergleich mit FUZZYDUP nur auf den Teil der Zeichenfolge, in dem aussagekräftige Unterschiede auftreten.
Weitere Informationen finden Sie unter OMIT( )-Funktion.
Testfelder verketten
Das Verketten mehrerer Testfelder kann die Effektivität des FUZZYDUP-Befehls verbessern, indem der Grad an Eindeutigkeit der Testwerte erhöht wird.
Indem Sie zum Beispiel die Felder „Adresse“ und „Stadt“ verketten, vermeiden Sie Fuzzy-Übereinstimmungen zwischen Adressen in unterschiedlichen Städten:
FUZZYDUP ON ALLTRIM(Adresse)+ALLTRIM(Stadt) OTHER Adresse City Lieferantenname LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Lieferantenname_Fuzzy_Duplikates" OPEN
Andere Methoden des Vergleichs von Zeichenfolgen
- Die Funktion DICECOEFFICIENT( ) stellt eine Methode für den Vergleich von Zeichenfolgen dar, welche die relative Position von Zeichen oder Zeichenblöcken völlig ignoriert oder weniger stark berücksichtigt.
- Die Funktionen SOUNDSLIKE( ) und SOUNDEX( ) bieten eine Methode zum Vergleichen von Zeichenfolgen anhand eines phonetischen (Klang) statt eines orthografischen Vergleichs (Buchstabierung).