FUZZYJOIN-Befehl

Konzept-Informationen

Fuzzy-Zusammenführung

Verwenden Sie die Fuzzy-Übereinstimmung, um Felder aus zwei Analytics-Tabellen in einer neuen einzelnen Analytics-Tabelle zu vereinen.

Hinweis

Um nahezu identische Werte in einem einzelnen Zeichenfeld (Fuzzy-Duplikate) zu erkennen, lesen Sie FUZZYDUP-Befehl.

Informationen über die Zusammenführung von Tabellen mit exakt übereinstimmenden Schlüsselfeldwerten finden Sie in JOIN-Befehl.

Syntax

FUZZYJOIN {DICE PERCENT Prozentsatz NGRAM N-Gramm-Länge|LEVDISTANCE DISTANCE Wert} PKEY primäres_Schlüsselfeld SKEY sekundäres_Schlüsselfeld {FIELDS Primärfelder|FIELDS ALL<EXCLUDE Primärfelder <...n>>} <WITH Sekundärfelder|WITH ALL <EXCLUDE Sekundärfelder <...n>>> <IF Test> <OPEN> TO Tabellenname <FIRSTMATCH> <WHILE Test> <FIRST Bereich|NEXT Bereich> <APPEND>

Hinweis

Sie können den Befehl FUZZYJOIN nicht lokal für eine Servertabelle ausführen.

Sie müssen den Befehlsnamen FUZZYJOIN vollständig ausschreiben. Eine Abkürzung ist nicht möglich.

Parameter

Name Beschreibung
DICE PERCENT Prozentsatz NGRAM N-Gramm-Länge | LEVDISTANCE DISTANCE Wert

Der zu verwendende Algorithmus für die Fuzzy-Übereinstimmung.

DICE Den Algorithmus „Dice-Koeffizient“ verwenden

  • PERCENT Prozentsatz Der zulässige Mindestwert des Dice-Koeffizienten zweier Zeichenfolgen, sodass diese als Fuzzy-Übereinstimmung gelten

    Geben Sie einen Dezimalbruch von 0,0000 bis 1,0000 ein (z.B. „0,7500“). Verwenden Sie bis zu vier Dezimalstellen.

    Bei einer Verringerung des Werts erhöht sich die Anzahl an Übereinstimmungen, da Zeichenfolgen mit einem stärkeren Fuzzy-Grad, also einer größeren Abweichung voneinander, einbezogen werden.

  • NGRAM N-Gramm-Länge Die zu verwendende N-Gramm-Länge

    Geben Sie eine ganze Zahl ab 1 an.

    Wenn die N-Gramm-Länge angehoben wird, wird die Ähnlichkeit der beiden Zeichenfolgen strikter bewertet.

    N-Gramme sind sich überlappende Teilzeichenfolgen (Zeichenblöcke), in die Vergleichszeichenfolgen im Rahmen der Berechnung des Dice-Koeffizienten aufgeteilt werden.

    Hinweis

    Wenn Sie DICE angeben, verwendet der FUZZYJOIN-Befehl die DICECOEFFICIENT( )-Funktion in einer IF-Anweisung, um Schlüsselfeldwerte bedingt zusammenzuführen. Genauere Informationen über die Funktion finden Sie unter Funktion DICECOEFFICIENT( ).

LEVDISTANCE Den Algorithmus „Levenshtein-Distanz“ verwenden

  • DISTANCE Wert Der zulässige Maximalwert der Levenshtein-Distanz zweier Zeichenfolgen, sodass diese als Fuzzy-Übereinstimmung gelten

    Geben Sie eine ganze Zahl ab 1 an.

    Bei einer Steigerung des Werts erhöht sich die Anzahl an Übereinstimmungen, da Zeichenfolgen mit einem stärkeren Fuzzy-Grad, also einer größeren Abweichung voneinander, einbezogen werden.

    Hinweis

    Wenn Sie LEVDISTANCE angeben, verwendet der FUZZYJOIN-Befehl die LEVDIST( )-Funktion in einer IF-Anweisung, um Schlüsselfeldwerte bedingt zusammenzuführen. Genauere Informationen über die Funktion finden Sie unter LEVDIST( )-Funktion.

    Im Gegensatz zur Funktion schneidet der Algorithmus der Levenshtein-Distanz im Befehl FUZZYJOIN führende und nachgestellte leere Werte ab und beachtet keine Groß-/Kleinschreibung.

PKEY Primärschlüsselfelder

Das Zeichenschlüsselfeld oder der Ausdruck in der Primärtabelle.

Sie können nur ein Primärschlüsselfeld festlegen.

SKEY Sekundärschlüsselfeld

Das Zeichenschlüsselfeld oder der Ausdruck in der Sekundärtabelle.

Sie können nur ein Sekundärschlüsselfeld festlegen.

FIELDS Primärfelder | FIELDS ALL

Die in die zusammengeführte Ausgabedatei einzuschließenden Felder oder Ausdrücke aus der Primärtabelle.

  • FIELDS Primärfelder Das angegebene Feld oder die angegebenen Felder einschließen

    Felder werden in derselben Reihenfolge einbezogen, in der Sie sie auflisten.

  • FIELDS ALL Alle Felder aus der Tabelle einschließen

    Felder werden in derselben Reihenfolge einbezogen, in der sie im Tabellenlayout dargestellt werden.

Hinweis

Sie müssen das Primärschlüsselfeld explizit festlegen, wenn es in der zusammengeführten Tabelle enthalten sein soll. Wenn Sie FIELDS ALL angeben, wird es auch eingeschlossen.

EXCLUDE Primärfelder

Optional

Nur gültig, wenn eine Fuzzy-Zusammenführung mit FIELDS ALL durchgeführt wird.

Die Felder, die von dem Befehl ausgeschlossen werden sollen. Durch EXCLUDE können Sie eine Feinanpassung des Schlüsselworts ALL vornehmen, indem Sie die angegebenen Felder ausschließen.

EXCLUDE muss unmittelbar auf FIELDS ALL folgen, oder auf das letzte Vorkommen des Schlüsselworts ALL, wenn Sie Felder aus einer oder mehreren verbundenen Tabellen einschließen. Beispiel:

FIELDS ALL EXCLUDE Feld_1 Feld_2
FIELDS ALL Name_der_verbundenen_Tabelle.ALL EXCLUDE Feld_1 Feld_2

WITH Sekundärfelder | WITH ALL

Optional

Die in die zusammengeführte Ausgabedatei einzuschließenden Felder oder Ausdrücke aus der Sekundärtabelle.

  • WITH Sekundärfelder Das angegebene Feld oder die angegebenen Felder einschließen

    Felder werden in derselben Reihenfolge einbezogen, in der Sie sie auflisten.

  • WITH ALL Alle Felder aus der Tabelle einschließen

    Felder werden in derselben Reihenfolge einbezogen, in der sie im Tabellenlayout dargestellt werden.

Hinweis

Sie müssen das Sekundärschlüsselfeld explizit festlegen, wenn es in der zusammengeführten Tabelle enthalten sein soll. Wenn Sie WITH ALL angeben, wird es auch eingeschlossen.

EXCLUDE Sekundärfelder

Optional

Nur gültig, wenn eine Fuzzy-Zusammenführung mit WITH ALL durchgeführt wird.

Die Felder, die von dem Befehl ausgeschlossen werden sollen. Durch EXCLUDE können Sie eine Feinanpassung von WITH ALL vornehmen, indem Sie die angegebenen Felder ausschließen.

EXCLUDE muss unmittelbar nach WITH ALL angegeben werden. Beispiel:

WITH ALL EXCLUDE Feld_1 Feld_2

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.

Hinweis

Die IF-Bedingung kann die Primärtabelle, die Sekundärtabelle oder beide referenzieren.

OPEN

Optional

Öffnet die durch den Befehl erstellte Tabelle, nachdem der Befehl ausgeführt wird. Nur gültig, wenn der Befehl eine Ausgabetabelle erstellt.

TO Tabellenname

Der Ort, an den die Ergebnisse des Befehls gesendet werden sollen:

  • Tabellenname Speichert die Ergebnisse in einer Analytics-Tabelle.

    Geben Sie Tabellenname als in Anführungszeichen gesetzte Zeichenfolge mit der Dateierweiterung „.FIL“ an. Beispiel: TO "Ausgabe.FIL"

    Standardmäßig wird die Tabellendatendatei (.FIL) im Ordner mit dem Analytics-Projekt gespeichert.

    Verwenden Sie entweder einen absoluten oder relativen Dateipfad, um die Datendatei in einen anderen bestehenden Ordner zu speichern:

    • TO "C:\Ausgabe.FIL"
    • TO "Ergebnisse\Ausgabe.FIL"

    Hinweis

    Tabellennamen sind auf 64 alphanumerische Zeichen beschränkt, was die .FIL-Dateierweiterung nicht einbezieht. Der Name kann den Unterstrich beinhalten ( _ ), aber keine anderen Sonderzeichen oder Leerzeichen. Er kann nicht mit einer Ziffer beginnen.

FIRSTMATCH

Optional

Gibt an, dass jeder Primärschlüsselwert mit lediglich dem ersten Vorkommen eines Sekundärschlüsselwerts zusammengeführt wird.

Falls das erste Vorkommen eine genaue Übereinstimmung ist, werden alle folgenden Fuzzy-Übereinstimmungen für den Primärschlüsselwert nicht in die zusammengeführte Ausgabetabelle aufgenommen.

Wenn Sie FIRSTMATCH nicht angeben, besteht das Standardverhalten von FUZZYJOIN darin, jeden Primärschlüsselwert mit allen Vorkommen von übereinstimmenden Sekundärschlüsseln zusammenzuführen.

FIRSTMATCH ist hilfreich, wenn Sie nur wissen möchten, ob es in den beiden Tabellen überhaupt Übereinstimmungen (genaue oder Fuzzy-Übereinstimmungen) gibt, und nicht warten möchten, bis alle Übereinstimmungen ermittelt wurden.

Sie können FIRSTMATCH auch verwenden, wenn Sie sicher sind, dass es für jeden Primärschlüsselwert höchstens eine Übereinstimmung in der Sekundärtabelle gibt.

WHILE Test

Optional

Ein bedingter Ausdruck, der wahr sein muss, damit ein Datensatz verarbeitet wird. Der Befehl wird ausgeführt, bis die Bedingung falsch ist oder das Tabellenende erreicht wurde.

Hinweis

Wenn Sie WHILE zusammen mit FIRST oder NEXT verwenden, endet die Datensatzverarbeitung, sobald eine Grenze erreicht wird.

FIRST Bereich | NEXT Bereich

Optional

Die Anzahl der zu verarbeitenden Datensätze:

  • FIRST Verarbeitung beim ersten Datensatz beginnen, bis die angegebene Datensatzanzahl erreicht wird
  • NEXT Verarbeitung beim aktuell ausgewählten Datensatz beginnen, bis die angegebene Datensatzanzahl erreicht wird

Verwenden Sie Bereich, um die Anzahl der zu verarbeitenden Datensätze anzugeben.

Wenn Sie FIRST und NEXT nicht angeben, werden standardmäßig alle Datensätze verarbeitet.

APPEND

Optional

Hängt die Befehlsausgabe an das Ende einer vorhandenen Datei an, statt die Datei zu überschreiben.

Hinweis

Vergewissern Sie sich, dass die Struktur der Befehlsausgabe und der bestehenden Datei identisch sind:

  • dieselben Felder
  • dieselbe Feldanordnung
  • abzugleichende Felder mit derselben Länge
  • abzugleichende Felder mit demselben Datentyp

Analytics hängt eine Ausgabe an eine bestehende Datei beliebiger Struktur an. Falls die Struktur der Ausgabe und der bestehenden Datei nicht übereinstimmen, kann die Datenintegrität verletzt sein, es können Daten fehlen oder falsch sein.

ISOLOCALE Gebietsschema_Code

Optional

Hinweis

Gilt nur für die Unicode-Edition von Analytics.

Das Systemgebietsschema im Format Sprache_Land. Für kanadisches Französisch geben Sie beispielsweise fr_ca ein.

Verwenden Sie die folgenden Codes:

  • Sprache Sprachcode nach dem Standard ISO 639
  • Land Ländercode nach dem Standard ISO 3166

    Wenn Sie keinen Ländercode angeben, verwendet ACL das Standardland für die verwendete Sprache.

Wenn Sie ISOLOCALE verwenden, wird das Standard-Systemgebietsschema nicht verwendet.

Beispiele

Fuzzy-Übereinstimmung zur Zusammenführung von zwei Tabellen verwenden, um Mitarbeiter zu finden, die auch Lieferanten sein könnten

Im folgenden Beispiel werden die Tabellen „Mitarbeiterstamm“ und „Lieferant“ mit Hilfe des gemeinsamen Schlüsselfelds der Anschrift (Felder „Adresse“ und „Lieferantenstraße“) zusammengeführt.

Der FUZZYJOIN-Befehl erstellt eine neue Tabelle, die entweder aus genauen oder Fuzzy-Übereinstimmungen von Primär- und Sekundärdatensätzen besteht. Das Ergebnis ist eine Liste der Mitarbeiter und Lieferanten, die entweder identische oder ähnliche Adressen haben.

FUZZYJOIN mit dem Algorithmus „Dice-Koeffizient“

OPEN Mitarbeiterstamm PRIMARY
OPEN Lieferant SECONDARY
FUZZYJOIN DICE PERCENT 0,8000 NGRAM 2 PKEY Adresse SKEY Lieferantenstraße FIELDS Mitarbeiternummer Vorname Nachname Adresse WITH Lieferantennummer Lieferantenname Lieferantenstraße OPEN TO "Mitarbeiter_Lieferanten_Übereinstimmungen"

FUZZYJOIN mit dem Algorithmus „Levenshtein-Distanz“

OPEN Mitarbeiterstamm PRIMARY
OPEN Lieferant SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Adresse SKEY Lieferantenstraße FIELDS Mitarbeiternummer Vorname Nachname Adresse WITH Lieferantennummer Lieferantenname Lieferantenstraße OPEN TO "Mitarbeiter_Lieferanten_Übereinstimmungen"

Alle Felder einschließen

Diese Version des FUZZYJOIN-Befehls schließt alle Felder der Primär- und Sekundärtabellen in die zusammengeführte Ausgabetabelle ein.

OPEN Mitarbeiterstamm PRIMARY
OPEN Lieferant SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Adresse SKEY Lieferantenstraße FIELDS ALL WITH ALL OPEN TO "Mitarbeiter_Lieferanten_Übereinstimmungen"

Wirksamkeit von Fuzzy-Übereinstimmung verbessern

Im folgenden Beispiel wird die Funktion SORTWORDS( ) verwendet, um die Wirksamkeit von Fuzzy-Übereinstimmungen zwischen den Feldern „Adresse“ und „Lieferantenstraße“ zu verbessern. Durch die Verwendung der Funktion UPPER( ) stellen Sie sicher, dass sich die Groß- und Kleinschreibung nicht auf die Sortierung von Elementen der Schlüsselfeldwerte auswirkt.

OPEN Mitarbeiterstamm PRIMARY
OPEN Lieferant SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY SORTWORDS(UPPER(Adresse)) SKEY SORTWORDS(UPPER(Lieferantenstraße)) FIELDS Mitarbeiternummer Vorname Nachname Adresse WITH Lieferantennummer Lieferantenname Lieferantenstraße OPEN TO "Mitarbeiter_Lieferanten_Übereinstimmungen"

Bemerkungen

Weitere Informationen über die Funktionsweise dieses Befehls finden Sie unter Fuzzy-Zusammenführung.

Beachtung der Groß- und Kleinschreibung

Der FUZZYJOIN-Befehl unterscheidet nicht zwischen Groß- und Kleinschreibung. Dabei spielt es keine Rolle, welchen Fuzzy-Übereinstimmungs-Algorithmus Sie verwenden. „SMITH“ entspricht also „smith“.

Führende und nachgestellte Leerzeichen

Der FUZZYJOIN-Befehl schneidet führende und nachgestellte Leerzeichen in Feldern automatisch ab. Dabei spielt es keine Rolle, welchen Fuzzy-Übereinstimmungs-Algorithmus Sie verwenden. Die TRIM( )- oder ALLTRIM( )-Funktionen müssen also nicht verwendet werden, wenn die Primär- und Sekundärschlüsselfelder angegeben werden.

Wirkung von FUZZYJOIN verbessern

Drei Techniken können die Wirksamkeit des FUZZYJOIN-Befehls beträchtlich steigern:

  • Einzelne Elemente in den Werten der Primär- und Sekundärschlüsselfelder sortieren
  • Generische Elemente aus den Werten der Primär- und Sekundärschlüsselfelder entfernen
  • Werte von Primär- und Sekundärschlüsselfeldern harmonisieren

Durch diese Techniken können Sie striktere Fuzzy-Einstellungen verwenden und dieselben Fuzzy-Übereinstimmungen erhalten, während Sie die Anzahl der Falschmeldungen verringern. Sie können die Techniken separat oder zusammen verwenden.

Einzelne Elemente in Schlüsselfeldwerten sortieren

Die Funktion SORTWORDS( ) kann die Wirksamkeit des FUZZYJOIN-Befehls verbessern, indem sie einzelne Elemente von Primär- und Sekundärschlüsselfeldern sequenziell sortiert.

Durch das Sortieren von Elementen, zum Beispiel Komponenten einer Adresse, ist es möglich, dass sich Schlüsselfeldwerte mit denselben Informationen, die ein unterschiedliches Format aufweisen, stärker angleichen. Eine stärkere Angleichung steigert die Wahrscheinlichkeit, dass Schlüsselfeldwerte als Fuzzy-Übereinstimmungen 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().

Hinweis

Das Sortieren von Elementen in Schlüsselfeldwerten eignet sich am besten bei einer Fuzzy-Zusammenführung nach dem Levenshtein-Distanz-Algorithmus.

Bei einer Fuzzy-Zusammenführung mit dem Dice-Koeffizient-Algorithmus muss das Sortieren von Elementen nicht unbedingt hilfreich sein. Testen Sie Beispieldaten, bevor Sie entscheiden, ob Sie SORTWORDS( ) in einer Produktionsumgebung zusammen mit dem Dice-Koeffizient-Algorithmus verwenden möchten.

Achtung

Wenn Sie SORTWORDS( ) zusammen mit dem FUZZYJOIN-Befehl verwenden, müssen Sie SORTWORDS( ) auf beide zu vergleichende Zeichenfolgen oder Felder anwenden.

Generische Elemente aus den Schlüsselfeldwerten entfernen

Die OMIT( )-Funktion kann die Effektivität des FUZZYJOIN-Befehls verbessern, indem generische Elemente wie „GmbH“ oder „AG“ bzw. Zeichen wie Kommas, Punkte und das Kaufmannsund (&) aus den Werten der Primär- und Sekundärschlüsselfelder entfernt werden.

Durch das Entfernen generischer Elemente und Satzzeichen konzentriert sich die Fuzzy-Zusammenführung nur auf den Teil der Schlüsselfeldwerte, in dem aussagekräftige Unterschiede auftreten könnten.

Weitere Informationen finden Sie unter OMIT( )-Funktion.

Schlüsselfeldwerte harmonisieren

Die Funktionen REPLACE( ) oder REGEXREPLACE( ) können die Wirksamkeit des FUZZYJOIN-Befehls verbessern, indem sie variable Ausprägungen desselben Elements der Werte von Primär- und Sekundärschlüsselfelder harmonisieren. Zum Beispiel könnten Sie „Straße“, „Str.“ und „Str“ auf denselben Wert „Str“ harmonisieren.

Durch die Harmonisierung von Elementen ist es möglich, dass sich Schlüsselfeldwerte mit denselben Informationen, die ein unterschiedliches Format aufweisen, stärker angleichen. Eine stärkere Angleichung steigert die Wahrscheinlichkeit, dass Schlüsselfeldwerte als Fuzzy-Übereinstimmungen ausgewählt werden.

Weitere Informationen finden Sie unter REPLACE( )-Funktion für einfache Ersetzungen und unter REGEXREPLACE( )-Funktion für komplexere Ersetzungen.