Führt einen Datenabgleich (Matching) zur Entitätsauflösung durch, um Zeilen in einer Eingabetabelle zu gruppieren. Diese Aktion identifiziert und gruppiert doppelte oder verwandte Datensätze, was für die Datenbereinigung und -konsolidierung entscheidend ist.
| Parameter | Beschreibung |
|---|---|
| algorithm | Gibt den zu verwendenden Algorithmus an. |
| clusterId | Gibt den Namen der Spalte in der Ausgabetabelle an, die die Cluster-IDs enthält. |
| clusterIdLabel | Gibt die Bezeichnung der Spalte in der Ausgabetabelle an, die die Cluster-IDs enthält. |
| clusterIdType | Gibt den Typ der Spalte in der Ausgabetabelle an, die die Cluster-IDs enthält. |
| columns | Gibt die Namen der Spalten in der Eingabetabelle an, die in die Ausgabetabelle übernommen werden sollen. Wenn nicht angegeben, werden alle Eingabespalten in der Ausgabe erscheinen. |
| doNotCluster | Gibt den Namen der Spalte in der Eingabetabelle an, die das 'Do Not Cluster'-Flag (boolescher Wert) enthält. Wenn der Wert 'true' oder '1' ist, wird die Zeile in einen eigenen Cluster eingeordnet. |
| emptyStringIsNull | Gibt an, ob leere Zeichenkettenwerte als NULL-Werte behandelt werden sollen (siehe Option nullValuesMatch). |
| inTable | Gibt die Eingabedatentabelle an. |
| matchRules | Gibt die Namen der Spalten an, die für den Abgleich von Zeilen und deren Gruppierung in Cluster verwendet werden sollen. |
| nThreads | Gibt die Anzahl der zu verwendenden Threads an (0 = Systemstandard auf jedem Worker verwenden). |
| nullValuesMatch | Gibt an, ob NULL-Werte zusammen gruppiert werden sollen. |
| outTable | Gibt die Ausgabedatentabelle an, in die die durchgereichten Spalten und die Cluster-IDs geschrieben werden sollen. |
Dieser Code erstellt eine einfache CAS-Tabelle namens 'identities' mit potenziell doppelten Kundendatensätzen, die für den Abgleich verwendet werden können.
| 1 | DATA casuser.identities; |
| 2 | INFILE DATALINES delimiter=','; |
| 3 | LENGTH name $ 20 address $ 30 email $ 30; |
| 4 | INPUT id name $ address $ email $; |
| 5 | DATALINES; |
| 6 | 1, John Smith, 123 Main St, j.smith@example.com |
| 7 | 2, Jon Smith, 123 Main Street, j.smith@example.com |
| 8 | 3, Mary Jones, 456 Oak Ave, mary.jones@example.com |
| 9 | 4, John Smith, 789 Pine Ln, jsmith@work.com |
| 10 | 5, Mary Jones, 456 Oak Ave, mary.jones@example.com |
| 11 | ; |
| 12 | RUN; |
Dieses Beispiel gruppiert Datensätze, bei denen der Wert in der Spalte 'email' exakt identisch ist. Es ist die einfachste Form des Matchings.
| 1 | PROC CAS; |
| 2 | entityRes.match / |
| 3 | inTable={name='identities' caslib='casuser'}, |
| 4 | matchRules={{rule={{columns={'email'}}}}}, |
| 5 | clusterId='email_cluster_id', |
| 6 | outTable={name='matched_simple', caslib='casuser', replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
Dieses Beispiel zeigt ein mehrstufiges Matching. Zuerst wird eine exakte Übereinstimmung für 'email' versucht. Anschließend wird eine zweite Regel angewendet, die eine exakte Übereinstimmung für 'name' UND 'address' erfordert. Dies ermöglicht die Gruppierung von Datensätzen, die entweder dieselbe E-Mail-Adresse ODER dieselbe Kombination aus Name und Adresse haben.
| 1 | PROC CAS; |
| 2 | entityRes.match / |
| 3 | inTable={name='identities' caslib='casuser'}, |
| 4 | matchRules={{rule={{columns={'email'}}}}, |
| 5 | {rule={{columns={'name', 'address'}}}}}, |
| 6 | clusterId='multi_rule_cluster_id', |
| 7 | columns={'id', 'name', 'address', 'email'}, |
| 8 | outTable={name='matched_detailed', caslib='casuser', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |