entityRes

match

##set_entityres

Description

entityRes.match

L'action entityRes.match est le véritable détective de votre écosystème de données SAS Viya . Elle permet d'identifier et de regrouper (clonage ou clusteringLe clustering est une technique d'apprentissage non supervisé regroupant des données similaires en segments homogènes afin d'identifier des structures cachées sans étiquettes préalables.) des enregistrements qui font référence à la même entité du monde réel, même si les données sont légèrement différentes (fautes de frappe, abréviations, etc.). C'est un peu comme si vous organisiez une réunion de famille et que vous deviez deviner que 'J. Doe' et 'John Doe' sont en fait la même personne qui essaie d'éviter la corvée de vaisselle. Elle utilise des règles de correspondance précises pour attribuer un identifiant de clusterEnsemble de nœuds (machines) interconnectés, gérés par Kubernetes, qui collaborent pour exécuter les microservices et le moteur CAS de SAS Viya, assurant haute disponibilité et passage à l'échelle. unique (clusterId) à chaque groupe d'enregistrements liés.

Syntaxe Officielle
entityRes.match /
algorithm="AUTO" | "DISTRIBUTED" | "SINGLE",
clusterId="string",
clusterIdLabel="string",
clusterIdType="CHAR" | "DOUBLE" | "INT",
columns={"variable-name-1" <, "variable-name-2", ...>},
doNotCluster="string",
emptyStringIsNull=TRUE | FALSE,
inTable={caslib="string", name="table-name", where="expression"},
matchRules={{rule={{columns={"string"}}}}},
nThreads=integer,
nullValuesMatch=TRUE | FALSE,
outTable={caslib="string", name="table-name", replace=TRUE | FALSE}

Paramètres Clés

Nom du paramètre Description
inTable Spécifie la table CAS d'entrée contenant les données à analyser .
matchRules Définit les règles de correspondance. Chaque règle contient une liste de colonnes (souvent des match codes générés au préalable) qui, si elles sont identiques, lient les enregistrements entre eux .
clusterId Nom de la colonne générée dans la table de sortie qui contiendra l'identifiant du groupe. Par défaut, SAS utilise 'cID' .
outTable Spécifie la table CAS de destination pour les résultats, incluant les colonnes d'origine et le nouvel identifiant de cluster .
nullValuesMatch Indique si deux valeurs NULL doivent être considérées comme correspondantes. À utiliser avec prudence, sinon tous vos clients 'Inconnus' vont devenir une seule et même grande famille .

Préparation des données

Création de données de test pour la résolution d'entités

Nous créons une table avec des noms et des codes de correspondance (match codes) simulés pour tester le regroupement.

1DATA casuser.clients_source;
2 LENGTH Nom $20. Code_Nom $20. Code_Email $20.;
3 INPUT Nom $ Code_Nom $ Code_Email $;
4 DATALINES;
5Dupont AAA111 EEE111
6Dupond AAA111 EEE222
7Dupont AAA111 EEE111
8Martin BBB222 EEE333
9Martine BBB222 EEE333
10;
11RUN;

Exemples d'utilisation

Regroupement simple par nom

Cet exemple regroupe les clients en utilisant uniquement le match code du nom.

1PROC CAS; entityRes.match / inTable={name:"clients_source"}, matchRules={{rule:{{columns:{"Code_Nom"}}}}}, outTable={name:"clients_groupes", replace:true}; RUN; QUIT;
Résultat Attendu :
Une table 'clients_groupes' est créée avec une colonne 'cID' identifiant les groupes de noms similaires.
Résolution multicritère avec sélection de colonnes

Ici, on définit deux règles : soit les noms correspondent, soit les emails correspondent. On ne garde que les colonnes nécessaires pour ne pas encombrer la mémoire (et l'esprit).

1PROC CAS; entityRes.match / inTable={name:"clients_source"}, clusterId="ID_UNIQUE_CLIENT", columns={"Nom"}, matchRules={{rule:{{columns:{"Code_Nom"}}}}, {rule:{{columns:{"Code_Email"}}}} text}, outTable={name:"entites_finales", replace:true}; RUN; QUIT;
Résultat Attendu :
Les enregistrements sont regroupés si le Code_Nom OU le Code_Email match. La table finale contient le nom et l'identifiant 'ID_UNIQUE_CLIENT'.