Fonction ISFUZZYDUP( )
Renvoie une valeur logique indiquant si une chaîne est un doublon approximatif d'une chaîne de comparaison.
Syntaxe
ISFUZZYDUP(chaîne_de_caractères1; chaîne_de_caractères2; levdist <;diffpct>)
Paramètres
Nom | Type | Description |
---|---|---|
chaîne_de_caractères1 | caractère | Première chaîne de la comparaison. |
chaîne_de_caractères2 | caractère | Deuxième chaîne de la comparaison. |
levdist | numérique |
Distance Levenshtein maximale autorisée entre les deux chaînes pour qu'elles soient identifiées comme doublons approximatifs. La valeur levdist ne peut pas être inférieure à 1 ou supérieure à 10. Le fait d'augmenter la valeur levdist 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. |
diffpct
optionnel |
numérique |
Seuil supérieur du « pourcentage de différence ». Le concept de pourcentage de différence est expliqué en Fonctionnement. La valeur diffpct ne peut pas être inférieure à 1 ni supérieure à 99. Le fait d'augmenter la valeur diffpct augmente le nombre de résultats en incluant des valeurs ayant une proportion de différence supérieure relativement à leur longueur. Si le paramètre est ignoré, le pourcentage de différence n'est pas pris en compte lors du traitement de la fonction FUZZYDUP( ).
|
Sortie
Logique. Renvoie T (« true », vrai) si les valeurs du paramètre chaîne_de_caractères sont des doublons approximatifs ; renvoie F (« false », faux) dans les autres cas.
Exemples
Exemples basiques
Renvoie F, car deux modifications sont nécessaires pour transformer « Smith » en « Smythe » ; cependant, la valeur levdist est 1 uniquement :
ISFUZZYDUP("Smith";"Smythe"; 1; 99)
Renvoie T, car deux modifications sont nécessaires pour transformer « Smith » en « Smythe », et la valeur levdist est 2 :
ISFUZZYDUP("Smith";"Smythe"; 2; 99)
Renvoie T, car aucune modification n'est nécessaire pour transformer « SMITH » en « smith », et la valeur levdist est 1 (la fonction ISFUZZYDUP( ) n'est pas sensible à la casse) :
ISFUZZYDUP("SMITH";"smith"; 1; 99)
Renvoie une valeur logique (T ou F) indiquant si les valeurs individuelles du champ Nom sont des doublons approximatifs pour la chaîne « Smith » :
ISFUZZYDUP(Nom;"Smith"; 3; 99)
Exemples avancés
Utilisation du pourcentage de différence
Le pourcentage de différence vous donne un outil permettant de réduire le nombre de faux positifs renvoyés par ISFUZZYDUP( ).
Aucun diffpct spécifié
Renvoie T, car cinq modifications sont nécessaires pour transformer « abc » en « Smith », et la valeur levdist est 5 :
ISFUZZYDUP("abc"; "Smith"; 5)
diffpct spécifié
Renvoie F, même si "abc" se trouve dans la distance Levenshtein spécifiée de « Smith », car 5 modifications/une longueur de chaîne de 3 entraîne un pourcentage de différence de 167 %, ce qui dépasse le diffpct spécifié de 99 % :
ISFUZZYDUP("abc"; "Smith"; 5; 99)
Le concept de pourcentage de différence est entièrement expliqué en Fonctionnement.
Isoler les doublons approximatifs de « Smith »
Créez un filtre isolant toutes les valeurs du champ Nom qui sont des doublons approximatifs de « Smith » :
SET FILTER TO ISFUZZYDUP(Nom; "Smith"; 3; 99)
Modifier les valeurs levdist ou diffpct vous permet d'ajuster la différence des valeurs filtrées.
Remarques
Quand utiliser la fonction ISFUZZYDUP( )
Utilisez la fonction ISFUZZYDUP( ) pour rechercher des valeurs presque identiques (des doublons approximatifs) ou pour repérer les incohérences orthographiques dans les données saisies manuellement.
Fonctionnement
La fonction ISFUZZYDUP( ) calcule la distance Levenshtein séparant deux chaînes, ainsi que le pourcentage de différence.
ISFUZZYDUP( ) est évaluée sur T (true, vrai) si :
- La distance Levenshtein est inférieure ou égale à la valeur levdist.
- Le pourcentage de différence est inférieur ou égal à la valeur diffpct (le cas échéant).
Distance Levenshtein
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( ).
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
Le recours au pourcentage de différence permet de réduire le nombre de faux positifs renvoyés par ISFUZZYDUP( ) :
- Le seuil supérieur de diffpct est 99 %, ce qui évite de remplacer entièrement une chaîne afin de la rendre identique.
- Les chaînes de caractères nécessitant un grand nombre de modifications par rapport à leur longueur sont exclues.
Conseils d'utilisation
- Sensibilité à la casse Cette fonction n'est pas sensible à la casse (par ex., « MARTIN » est équivalent à « martin ».
- Espaces de fin Elle tronque les espaces de fin dans les champs de manière automatique. Vous n'avez donc pas besoin d'utiliser la fonction TRIM( ) lorsque vous renseignez un champ comme paramètre.
- Suppression des éléments génériques La fonction OMIT( ) peut améliorer l'efficacité de la fonction ISFUZZYDUP( ) en supprimant des éléments génériques tels que « Corporation » ou « Inc. » des valeurs de champ.
La suppression d'éléments génériques recentre la comparaison de chaînes ISFUZZYDUP( ) uniquement sur la portion des chaînes dans lesquelles une différence significative peut se produire.
Différences entre la commande FUZZYDUP et la fonction ISFUZZYDUP( )
La commande FUZZYDUP identifie tous les doublons approximatifs d'un champ, les organise en groupes et renvoie des résultats non exhaustifs.
La fonction ISFUZZYDUP( ) identifie une liste exhaustive de doublons approximatifs pour une valeur de caractère unique.
La commande et la fonction identifient tous deux les doublons exacts. Contrairement à la commande, cette fonction ne vous permet pas d'exclure les doublons exacts.
Qu'entend-on « exhaustif » ?
Exhaustif signifie que toutes les valeurs du degré de différence spécifié sont renvoyées, quelle que soit leur position dans le champ du test par rapport à la valeur du test.
La fonction ISFUZZYDUP( ) est utile si les résultats non-exhaustifs produits par la commande FUZZYDUP ne sont pas suffisants dans le cadre de votre analyse et si vous devez examiner directement chaque doublon approximatif pour rechercher une valeur de caractère spécifique.
Fonctions associées
- La fonction LEVDIST( ) fournit une méthode alternative pour comparer des chaînes en fonction de la distance Levenshtein.
Contrairement à la fonction ISFUZZYDUP( ), la fonction LEVDIST( ) est sensible à la casse par défaut.
- La fonction DICECOEFFICIENT( ) ne met pas l'accent sur la position des caractères ou des blocs de caractères voire les ignore complètement lors de la comparaison de chaînes de caractères.
- Les fonctions SOUNDSLIKE( ) et SOUNDEX( ) comparent des chaînes de façon phonétique (son) plutôt qu'orthographique.