Commande FUZZYDUP
Information de concept
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.
|
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 :
|
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.