Commande FUZZYJOIN

Information de Concept

Jointure approximative

Utilise les correspondances approximatives pour combiner des champs de deux tables Analytics dans une nouvelle table Analytics unique.

Note

Pour détecter des valeurs presque identiques dans un seul champ de type caractère (doublons approximatifs), consultez la section Commande FUZZYDUP.

Pour joindre des tables à l'aide des valeurs de champs clés correspondant exactement, consultez la section Commande JOIN.

Syntaxe

FUZZYJOIN {DICE PERCENT pourcentage NGRAM longueur_n-grammes|LEVDISTANCE DISTANCE valeur} PKEY champ_clé_principal SKEY champ_clé_secondaire {FIELDS champs_principaux|FIELDS ALL <EXCLUDE champs_principaux <...n>>} <WITH champs_secondaires|WITH ALL <EXCLUDE champs_secondaires <...n>>> <IF test> <OPEN> TO nom_table <FIRSTMATCH> <WHILE test> <FIRST plage|NEXT plage> <APPEND>

Note

Vous ne pouvez pas exécuter la commande FUZZYJOIN localement par rapport à une table de serveur.

Vous devez indiquer en entier le nom de la commande FUZZYJOIN. Vous ne pouvez pas l'abréger.

Paramètres

Nom Description
DICE PERCENT pourcentage NGRAM longueur_n-grammes | LEVDISTANCE DISTANCE valeur

L'algorithme de correspondance approximative à utiliser.

DICEUtilise l’algorithme du coefficient de Dice

  • PERCENT pourcentageLe coefficient minimum autorisé de deux chaînes de caractères pour qu’elles puissent être qualifiées de correspondance approximative

    Spécifiez un nombre décimal, compris entre 0,0000 et 1,0000 (par exemple, 0,7500). Utilisez quatre décimales au maximum.

    Le fait de diminuer cette valeur augmente le nombre de correspondances en incluant des correspondances d'un niveau d'approximation supérieur, c'est-à-dire des chaînes de caractères qui diffèrent davantage les unes des autres.

  • NGRAM longueur_n-grammesLa longueur n-grammes à utiliser

    Spécifiez un nombre entier, 1 ou supérieur.

    Augmenter la longueur n-grammes rend encore plus strict le critère de similarité entre deux chaînes de caractères.

    Les N-grammes sont les sous-chaînes (blocs de caractères) qui se chevauchent et parmi lesquelles les chaînes de comparaison sont divisées dans le cadre du calcul du coefficient de Dice.

    Note

    Lorsque vous spécifiez DICE, la commande FUZZYJOIN utilise la fonction DICECOEFFICIENT( ) dans une instruction IF pour joindre conditionnellement des valeurs de champs clés. Pour obtenir des informations détaillées sur la fonction, consultez la section Fonction DICECOEFFICIENT( ).

LEVDISTANCEUtilise l’algorithme de distance Levenshtein

  • DISTANCE valeurLa distance de Levenshtein maximale permise entre deux chaînes de caractères pour qu’elles puissent être qualifiées de correspondance approximative

    Spécifiez un nombre entier, 1 ou supérieur.

    Le fait d'augmenter cette valeur augmente le nombre de correspondances en incluant des correspondances d'un niveau d'approximation supérieur, c'est-à-dire des chaînes de caractères qui diffèrent davantage les unes des autres.

    Note

    Lorsque vous spécifiez LEVDISTANCE, la commande FUZZYJOIN utilise la fonction LEVDIST( ) dans une instruction IF pour joindre conditionnellement des valeurs de champs clés. Pour obtenir des informations détaillées sur la fonction, consultez la section Fonction LEVDIST( ).

    Contrairement à la fonction, l’algorithme de distance Levenshtein de la commande FUZZYJOIN tronque automatiquement les espaces de début et de fin, et n’est pas sensible à la casse.

PKEY champ_clé_principal

Le champ clé, ou l'expression clé, de type caractère dans la table principale.

Vous ne pouvez spécifier qu'un seul champ clé principal.

SKEY champ_clé_secondaire

Le ou les champs clés, ou l'expression clé, de type caractère dans la table secondaire.

Vous ne pouvez spécifier qu'un seul champ clé secondaire.

FIELDS champs_principaux | FIELDS ALL

Les champs ou expressions de la table principale à inclure dans la table de sortie jointe.

  • FIELDS champs_principauxIncluez le(s) champ(s) spécifié(s)

    Les champs sont inclus dans l'ordre dans lequel vous les énumérez.

  • FIELDS ALLIncluez tous les champs de la table

    Les champs sont inclus dans leur ordre d'apparition dans le format de table.

Note

Vous devez indiquer de manière explicite le champ clé principal si vous voulez l'intégrer dans la table jointe. Indiquer FIELDS ALL permet aussi de l'intégrer.

EXCLUDE champs_principaux

facultatif

Valide uniquement en cas de réalisation d'une jointure approximative à l'aide de FIELDS ALL.

Le ou les champs à exclure de la commande. EXCLUDE vous permet de personnaliser le mot-clé ALL, en excluant les champs spécifiés.

EXCLUDE doit suivre immédiatement FIELDS ALL, ou la dernière occurrence du mot-clé ALL si vous incluez des champs d'une ou de plusieurs tables associées. Par exemple :

FIELDS ALL EXCLUDE champ_1 champ_2
FIELDS ALL nom_table_associée.ALL EXCLUDE champ_1 champ_2 

WITH champs_secondaires | WITH ALL

facultatif

Les champs ou expressions de la table secondaire à inclure dans la table de sortie jointe.

  • WITH champs_secondairesIncluez le(s) champ(s) spécifié(s)

    Les champs sont inclus dans l'ordre dans lequel vous les énumérez.

  • WITH ALLIncluez tous les champs de la table

    Les champs sont inclus dans leur ordre d'apparition dans le format de table.

Note

Vous devez indiquer de manière explicite le champ clé secondaire si vous voulez l'intégrer dans la table jointe. Indiquer WITH ALL permet aussi de l'intégrer.

EXCLUDE champs_secondaires

facultatif

Valide uniquement en cas de réalisation d'une jointure approximative à l'aide de WITH ALL.

Le ou les champs à exclure de la commande. EXCLUDE vous permet de personnaliser WITH ALL, en excluant les champs spécifiés.

EXCLUDE doit suivre immédiatement WITH ALL. Par exemple :

WITH ALL EXCLUDE champ_1 champ_2

IF test

facultatif

Expression conditionnelle qui doit être vraie afin de traiter chaque enregistrement. La commande est exécutée uniquement sur les enregistrements remplissant la condition.

Note

La condition IF est évaluée uniquement par rapport aux enregistrements restant dans une table après application des options relevant du champ d'application (WHILE, FIRST, NEXT).

Note

La condition IF peut faire référence à la table principale, à la table secondaire ou aux deux.

OUVRIR

facultatif

Ouvre la table créée par la commande après l'exécution de la commande. Valide uniquement lorsque la commande crée une table de sortie.

TO nom_table

Emplacement vers lequel envoyer les résultats de la commande :

  • nom_tableEnregistre les résultats dans une table Analytics

    Indiquez nom_table sous forme de chaîne entre guillemets avec une extension de fichier .FIL. Par exemple : TO "Output.FIL"

    Par défaut, le fichier de données de table (.FIL) est enregistré dans le dossier contenant le projet Analytics.

    Utilisez un chemin de fichier absolu ou relatif pour enregistrer le fichier de données dans un autre dossier existant :

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    Note

    La longueur des noms des tables est limitée à 64 caractères alphanumériques, sans l'extension .FIL. Le nom peut inclure le caractère de soulignement ( _ ), mais aucun autre caractère spécial ni espace. Le nom ne peut pas commencer par un chiffre.

FIRSTMATCH

facultatif

Spécifie que chaque valeur de clé primaire n'est jointe qu'à la première occurrence d'une correspondance de clé secondaire.

S'il se trouve que la première occurrence est une correspondance exacte, les correspondances approximatives suivantes pour la valeur de clé primaire ne sont pas incluses dans la table de sortie jointe.

Si vous omettez FIRSTMATCH, le comportement par défaut de FUZZYJOIN consiste à joindre chaque valeur de clé primaire à toutes les occurrences des correspondances de clés secondaires.

FIRSTMATCH est utile si vous voulez seulement savoir s'il existe des correspondances, exactes ou approximatives, entre deux tables, et si vous souhaitez éviter le temps de traitement nécessaire pour identifier toutes les correspondances.

Vous pouvez également utiliser FIRSTMATCH si vous êtes certain qu'il n'existe qu'une seule correspondance dans la table secondaire pour chaque valeur de clé primaire.

WHILE test

facultatif

Expression conditionnelle qui doit être vraie afin de traiter chaque enregistrement. La commande est exécutée jusqu'à ce que la condition soit évaluée comme fausse ou lorsque la fin de la table est atteinte.

Note

Si vous utilisez WHILE conjointement avec FIRST ou NEXT, le traitement des enregistrements s'arrête dès qu'une limite est atteinte.

FIRST plage | NEXT plage

facultatif

Le nombre d'enregistrements à traiter :

  • FIRSTPour commencer le traitement à partir du premier enregistrement jusqu’à ce que le nombre d’enregistrements spécifié soit atteint
  • NEXTPour commencer le traitement à partir de l’enregistrement actuellement sélectionné jusqu’à ce que le nombre d’enregistrements spécifié soit atteint

Utilisez plage pour indiquer le nombre d'enregistrements à traiter.

Si vous ignorez FIRST et NEXT, tous les enregistrements sont traités par défaut.

APPEND

facultatif

Ajoute la sortie de commande à la fin d'un fichier existant au lieu de remplacer ce fichier.

Note

Vous devez vous assurer que la structure de la sortie de la commande et du fichier existant est identique :

  • les mêmes champs
  • le même ordre des champs
  • les champs correspondants ont la même longueur
  • les champs correspondants ont le même type de données

Analytics ajoute la sortie à un fichier existant sans tenir compte de sa structure, ce qui peut désordonner les données si la structure de la sortie et du fichier existant ne correspond pas.

ISOLOCALE code_paramètres_régionaux

facultatif

Note

Applicable dans l'édition Unicode d'Analytics uniquement.

Paramètre système local au format langue_pays. Par exemple, pour utiliser le français canadien, saisissez fr_ca.

Utilisez les codes suivants :

  • LanguesCode linguistique de la norme ISO 639
  • PaysCode pays de la norme ISO 3166

    Si vous n'indiquez pas de code pays, c'est le pays par défaut pour la langue qui est utilisé.

Si vous n'utilisez pas ISOLOCALE, ce sont les paramètres système régionaux par défaut qui sont utilisés.

Exemples

Utilisez les correspondances approximatives pour joindre deux tables afin de détecter les employés susceptibles d'être des fournisseurs

L'exemple ci-dessous joint les tables Empmast et Fournisseur en utilisant l'adresse comme champ clé commun (champs Adresse et Rue_Fournisseur).

La commande FUZZYJOIN crée une nouvelle table avec des enregistrements primaires et secondaires qui sont des correspondances exactes ou approximatives. Le résultat est une liste de tous les employés et fournisseurs ayant soit une adresse identique, soit une adresse similaire.

FUZZYJOIN avec l'algorithme du coefficient de Dice

OPEN Empmast PRIMARY
OPEN Fournisseur SECONDARY
FUZZYJOIN DICE PERCENT 0,8000 NGRAM 2 PKEY Adresse SKEY Rue_Fournisseur FIELDS Numéro_Employé Prénom Nom Adresse WITH Numéro_fournisseur Nom_fournisseur Rue_Fournisseur OPEN TO "Correspondance_employé_fournisseur"

FUZZYJOIN avec l'algorithme de distance Levenshtein

OPEN Empmast PRIMARY
OPEN Fournisseur SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Adresse SKEY Rue_Fournisseur FIELDS Numéro_Employé Prénom Nom Adresse WITH Numéro_fournisseur Nom_fournisseur Rue_Fournisseur OPEN TO "Correspondance_employé_fournisseur"

Inclure tous les champs

Cette version de la commande FUZZYJOIN inclut tous les champs des tables principale et secondaires dans la table de sortie jointe.

OPEN Empmast PRIMARY
OPEN Fournisseur SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Adresse SKEY Rue_Fournisseur FIELDS ALL WITH ALL OPEN TO "Correspondance_employé_fournisseur"

Améliorer l'efficacité des correspondances approximatives

L'exemple ci-dessous utilise la fonction SORTWORDS( ) pour améliorer l'efficacité des correspondances approximatives entre les champs Adresse et Rue_Fournisseur. L'utilisation de la fonction UPPER( ) permet d'assurer que la casse n'affecte pas le tri des éléments dans les valeurs de champs clés.

OPEN Empmast PRIMARY
OPEN Fournisseur SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY SORTWORDS(UPPER(Adresse)) SKEY SORTWORDS(UPPER(Rue_Fournisseur)) FIELDS Numéro_Employé Prénom Nom Adresse WITH Numéro_fournisseur Nom_fournisseur Rue_Fournisseur OPEN TO "Correspondance_employé_fournisseur"

Remarques

Pour plus d'informations sur le fonctionnement de cette commande, consultez la section Jointure approximative.

Respect de la casse

La commande FUZZYJOIN n'est pas sensible à la casse, quel que soit l'algorithme de correspondances approximatives que vous utilisez. "SMITH" est donc équivalent à "smith".

Espaces de début et de fin

La commande FUZZYJOIN tronque les espaces de début et de fin dans les champs de manière automatique, quel que soit l'algorithme de correspondances approximatives que vous utilisez. Il n'est pas nécessaire d'utiliser les fonctions TRIM( ) ou ALLTRIM( ) pour spécifier les champs clés principaux et secondaires.

Améliorer l'efficacité de FUZZYJOIN

Trois techniques peuvent améliorer considérablement l'efficacité de la commande FUZZYJOIN :

  • trier les éléments individuels dans les valeurs des champs clés primaires et secondaires
  • supprimer les éléments génériques des valeurs des champs clés primaires et secondaires
  • harmoniser les valeurs des champs clés primaires et secondaires

Ces techniques vous permettent d'utiliser des paramètres approximatifs plus stricts et d'obtenir toujours les mêmes correspondances approximatives, tout en réduisant le nombre de fausses correspondances positives. Vous pouvez utiliser ces techniques séparément ou en combinaison.

Trier les éléments individuels dans les valeurs des champs clés

La fonction SORTWORDS( ) peut améliorer l'efficacité de la commande FUZZYJOIN en triant les éléments individuels des valeurs des champs clés primaires et secondaires dans un ordre séquentiel.

Trier des éléments, comme les composantes d'une adresse, permet de faire en sorte que des valeurs de champs clés comportant les mêmes informations, mais à un format différent, se ressemblent davantage. Une ressemblance plus proche améliore la probabilité que des valeurs de champs clés soient sélectionnées comme correspondances approximatives les unes des autres.

Pour de plus amples informations, consultez la section Fonction SORTWORDS( ).

Pour une vidéo de présentation de SORTWORDS( ), consultez Correspondance approximative avec SORTWORDS() (en anglais uniquement).

Note

Le tri des éléments dans les valeurs des champs clés est le mieux adapté aux jointures approximatives en utilisant l'algorithme de distance Levenshtein.

Le tri des éléments pendant les jointures approximatives à l'aide de l'algorithme du coefficient de Dice peut être avantageux ou non. Tester un jeu de données d'échantillon avant de décider d'utiliser SORTWORDS( ) conjointement avec l'algorithme du coefficient de Dice dans un cadre de production.

Attention

Si vous utilisez SORTWORDS( ) conjointement avec la commande FUZZYJOIN, vous devez appliquer SORTWORDS( ) aux deux chaînes de caractères ou aux deux champs comparés.

Suppression des éléments génériques des valeurs des champs clés

La fonction OMIT( ) peut améliorer l'efficacité de la commande FUZZYJOIN en supprimant des éléments génériques tels que « Corporation » ou « Inc. » ou des caractères comme les virgules, les points et les esperluettes (&) dans les valeurs des champs clés primaires et secondaires.

La suppression d'éléments génériques et de ponctuation recentre la correspondance approximative des valeurs de champs clés uniquement sur la portion des valeurs dans lesquelles une différence significative peut se présenter.

Pour de plus amples informations, consultez la section Fonction OMIT( ).

Harmoniser les valeurs des champs clés

Les fonctions REPLACE( ) ou REGEXREPLACE( ) peuvent améliorer l'efficacité de la commande FUZZYJOIN en harmonisant les variantes d'un même élément dans les valeurs des champs clés primaires et secondaires. Par exemple, vous pourriez harmoniser "Street", "St." et "St" pour utiliser la valeur unique "St".

Harmoniser des éléments permet de faire en sorte que des valeurs de champs clés comportant les mêmes informations, mais à un format différent, se ressemblent davantage. Une ressemblance plus proche améliore la probabilité que des valeurs de champs clés soient sélectionnées comme correspondances approximatives les unes des autres.

Pour de plus amples informations, consultez Fonction REPLACE( ) concernant les remplacements directs et Fonction REGEXREPLACE( ) concernant les remplacements plus complexes.