Commande FUZZYDUP

Information de concept

Recherche de doublons approximatifs

Détecte des valeurs presque identiques (doublons approximatifs) dans un champ de type caractère.

Remarque

Pour utiliser les correspondances approximatives afin de combiner des champs de deux tables Analytics dans une nouvelle table Analytics unique, reportez-vous à la rubrique Commande FUZZYJOIN.

Syntaxe

FUZZYDUP ON champ_clé <OTHER champ <...n>|OTHER ALL <EXCLUDE nom_champ <...n>>> LEVDISTANCE valeur <DIFFPCT pourcentage> <RESULTSIZE pourcentage> <EXACT> <IF test> TO nom_table <LOCAL> <OPEN>

Paramètres

Nom Description
ON champ_clé Le champ ou l'expression de type caractère dans lesquels rechercher les doublons approximatifs.
OTHER champ <...n> | OTHER ALL

optionnel

Un ou plusieurs champs supplémentaires à inclure dans la sortie.

  • OTHER champ <...n> inclut le(s) champ(s) spécifié(s)

    Les champs sont inclus dans l'ordre de la liste.

  • OTHER ALL incluez tous les champs de la table qui ne sont pas spécifiés comme champ clé.

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

EXCLUDE nom_champ

optionnel

Valide uniquement lors de l'utilisation de OTHER ALL.

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

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

OTHER ALL EXCLUDE champ_1 champ_2
LEVDISTANCE valeur

La distance Levenshtein maximale autorisée entre deux chaînes pour qu'elles soient identifiées en tant que doublons approximatifs et pour qu'elles soient incluses dans les résultats.

La valeur LEVDISTANCE ne peut pas être inférieure à 1 ni supérieure à 10. Le fait d'augmenter la valeur LEVDISTANCE augmente le nombre de résultats en incluant des valeurs d'un niveau d'approximation supérieur, c'est-à-dire des valeurs qui diffèrent davantage les unes des autres.

Pour plus d'informations, consultez la section Comportement de FUZZYDUP.

DIFFPCT pourcentage

optionnel

Un seuil délimitant le « pourcentage de différence » ou la proportion d'une chaîne pouvant être différente.

Le pourcentage qui résulte d'un calcul Analytics interne effectué sur des paires de doublons approximatifs potentiels doit être inférieur ou égal à la valeur DIFFPCT de la paire à inclure dans les résultats. La valeur DIFFPCT ne peut pas être inférieure à 1 ni supérieure à 99.

Si DIFFPCT est ignoré, le seuil est désactivé et le pourcentage de différence n'est pas pris en compte lors du traitement de la commande FUZZYDUP.

Pour plus d'informations, consultez la section Comportement de FUZZYDUP.

RESULTSIZE pourcentage

optionnel

Taille maximale de l'ensemble des résultats de sortie sous forme de pourcentage du nombre d'enregistrements dans le champ clé.

Par exemple, dans le cas d'un champ clé comportant 50 000 enregistrements, un RESULTSIZE de 3 arrêterait le traitement lorsque les résultats dépasseraient 1500 doublons approximatifs (50 000 x 0,03). Aucune table de sortie n'est générée si le traitement est arrêté.

La valeur RESULTSIZE ne peut pas être inférieure à 1 ni supérieure à 1 000 (mille) pour cent. La limite de 1000 % doit s'adapter à la nature de la correspondance plusieurs-à-plusieurs, qui peut générer des résultats plus nombreux que l'ensemble de données de test d'origine.

Si RESULTSIZE est ignoré, le seuil est désactivé et la taille du résultat n'est pas prise en compte lors du traitement de la commande FUZZYDUP.

Attention

Ignorer RESULTSIZE peut produire un jeu de résultats trop grand, lent à traiter et excédant la mémoire disponible, ce qui provoque l'arrêt du traitement. Ignorez RESULTSIZE uniquement si vous êtes sûr(e) de produire des résultats de taille gérable.

EXACT

optionnel

Inclut les doublons exacts ainsi que les doublons approximatifs dans les résultats.

IF test

optionnel

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

Remarque

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).

TO nom_table

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

  • nom_table enregistre 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 "Sortie.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:\Sortie.FIL"
    • TO "Résultats\Sortie.FIL"

    Remarque

    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.

LOCAL

optionnel

Enregistre le fichier de sortie au même emplacement que le projet Analytics.

Remarque

Applicable uniquement lorsque vous exécutez la commande sur une table de serveur avec un fichier de sortie qui est une table Analytics.

Le paramètre LOCAL doit suivre immédiatement le paramètre TO.

OPEN

optionnel

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.

Variables de sortie Analytics

Nom Contient
GAPDUPn

Nombre total d'omissions, de doublons ou de groupes de doublons approximatifs identifiés par la commande.

Exemples

Recherche de doublons approximatifs dans un champ de nom

Les doublons approximatifs sont recherchés dans un champ de nom (le champ Nom de la table « Liste_Employés » dans ACL DATA\Exemples de fichiers de données\Données_Employés_Metaphor.ACL). Les résultats sont renvoyés vers une nouvelle table Analytics.

  • En plus du champ test, d'autres champs sont inclus dans les résultats.
  • La distance Levenshtein maximale autorisée est 1.
  • La marge de différence d'une chaîne est limitée à 50 %.
  • La taille des résultats est limitée à 20 % de la taille du champ test.
  • En plus des doublons approximatifs, des doublons exacts sont inclus.
OPEN Liste_Employés
FUZZYDUP ON Nom OTHER Prénom NoEmp LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Nom_Approximatif" OPEN

Remarques

Fonctionnement

La commande FUZZYDUP recherche des valeurs presque identiques (des doublons approximatifs) ou repère les incohérences orthographiques dans les données saisies manuellement.

Contrairement à la fonction ISFUZZYDUP( ), qui identifie une liste exhaustive de doublons approximatifs pour une valeur de caractère unique, la commande FUZZYDUP identifie tous les doublons approximatifs d'un champ, les organise en groupes non exhaustifs et renvoie des résultats.

Pour des informations détaillées sur le fonctionnement de cette commande, consultez Analyse de doublons approximatifs.

Qu'entend-on par « non-exhaustif » ?

Non-exhaustif signifie que dans les résultats, les groupes de doublons approximatifs individuels peuvent ne pas inclure tous les doublons approximatifs d'un champ test qui se situent dans la marge de différence définie pour le propriétaire du groupe. Cependant, si un propriétaire de groupe est un doublon approximatif d'une autre valeur du champ test, les deux valeurs sont affichées ensemble dans un groupe, dans les résultats. Les groupes peuvent donc ne pas être exhaustifs, mais les résultats, au total, sont exhaustifs.

Si la génération d'une seule liste exhaustive de doublons approximatifs pour une valeur spécifique du champ de test est importante pour votre analyse, vous pouvez utiliser la fonction ISFUZZYDUP( ) pour le faire.

Comportement de FUZZYDUP

Dans la commande FUZZYDUP, vous pouvez spécifier deux paramètres qui contrôlent la marge de différence entre les doublons approximatifs et la taille des résultats :

  • LEVDISTANCE
  • DIFFPCT

Vous devrez peut-être essayer différentes combinaisons de paramètres pour ces deux paramètres afin de trouver la combinaison la mieux adaptée à un ensemble de données spécifique.

LEVDISTANCE (distance Levenshtein)

Lors du traitement des données, la commande FUZZYDUP calcule la distance Levenshtein entre chaque paire de chaînes évaluée dans le champ test, puis calcule le pourcentage de différence. La distance Levenshtein représente le nombre minimal de modifications d'un caractère unique requises pour rendre une chaîne identique à une autre chaîne. Pour plus d'informations, consultez la section Fonction LEVDIST( ).

DIFFPCT (pourcentage de différence)

Le pourcentage de différence correspond au pourcentage de la plus courte des deux chaînes évaluées et qui présente des dissemblances. Le pourcentage de différence est le résultat du calcul Analytics interne suivant (ce calcul se base sur la distance Levenshtein séparant les deux chaînes) :

Distance Levenshtein / nombre de caractères dans la chaîne plus courte × 100 = pourcentage de différence

Plus d'informations

Pour plus d'informations sur les paramètres de différence entre les doublons approximatifs, le contrôle de la taille du résultat et les groupes de doublons approximatifs, consultez la section Analyse de doublons approximatifs.

Sensible à la casse

La commande FUZZYDUP n'est pas sensible à la casse (par ex., « MARTIN » est équivalent à « martin »).

Troncage automatique des espaces de fin

La commande FUZZYDUP tronque automatiquement les espaces de fin dans champ_clé. Vous n'avez donc pas besoin d'utiliser la fonction TRIM( ) ou ALLTRIM( ) lorsque vous renseignez un seul champ comme champ_clé.

Si vous concaténez des champs pour key_field, vous devez utiliser ALLTRIM( ), comme indiqué ci-dessous.

Améliorer l'efficacité de FUZZYDUP

Trois techniques permettent de sensiblement améliorer l'efficacité de la commande FUZZYDUP :

  • trier les éléments individuels dans les valeurs des champs tests
  • supprimer des éléments génériques des valeurs de champs tests
  • concaténer des champs test

Ces techniques génèrent des ensembles de résultats plus ciblés contenant moins de faux positifs et plus de vrais positifs. Vous pouvez utiliser ces techniques séparément ou en combinaison.

Trier les éléments individuels dans les valeurs des champs tests

La fonction SORTWORDS( ) peut améliorer l'efficacité de la commande FUZZYDUP en triant les éléments individuels des valeurs de champ test dans un ordre séquentiel.

Trier des éléments, comme les composantes d'une adresse, permet de faire en sorte que deux chaînes de caractères comportant les mêmes informations, mais à un format différent, se ressemblent davantage. Une ressemblance plus proche améliore la probabilité qu'une paire de chaînes soit sélectionnée comme doublons approximatifs de l'une l'autre.

Pour plus d'informations, consultez la section Fonction SORTWORDS( ).

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

Supprimer des éléments génériques des valeurs de champs tests

La fonction OMIT( ) peut améliorer l'efficacité de la commande FUZZYDUP 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 test.

La suppression des éléments génériques et de signes de ponctuation permet d'axer la comparaison FUZZYDUP sur la portion des chaînes qui peut inclure une différence significative.

Pour plus d'informations, consultez la section Fonction OMIT( ).

Concaténer des champs test

La concaténation de deux champs test ou plus peut améliorer l'efficacité de la commande FUZZYDUP en augmentant le degré d'unicité des valeurs test.

Par exemple, en concaténant un champ Adresse et un champ Ville, vous évitez les doublons approximatifs parmi les adresses de différentes villes :

FUZZYDUP ON ALLTRIM(Adresse)+ALLTRIM(Ville) OTHER Adresse Ville Nom_Fournisseur LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Nom_Fournisseur_Fuzzy_Dupes" OPEN

Autres méthodes de comparaison de chaînes de caractères

  • La fonction DICECOEFFICIENT( ) fournit une méthode de comparaison des chaînes qui ne met pas l'accent sur la position des caractères ou des blocs de caractères voire les ignore complètement.
  • Les fonctions SOUNDSLIKE( ) et SOUNDEX( ) fournissent une méthode de comparaison des chaînes de type phonétique (son) plutôt qu'orthographique.