Función ISFUZZYDUP( )
Devuelve un valor lógico que indica si una cadena es un duplicado inexacto de una cadena de comparación.
Sintaxis
ISFUZZYDUP(cadena1; cadena2; levdist <;diffpct>)
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| cadena1 | carácter | La primera cadena de la comparación. |
| cadena2 | carácter | La segunda cadena de la comparación. |
| levdist | numérico |
La distancia de Levenshtein máxima permitida entre las dos cadenas que puedan identificarse como duplicados inexactos. El valor levdist no puede ser menor de 1 o mayor que 10. Al incrementar el valor de levdist aumenta la cantidad de resultados porque se incluyen valores con un mayor grado de inexactitud; es decir valores que difieren más entre sí. |
| diffpct
opcional |
numérico |
El umbral superior para el 'porcentaje de diferencia'. El porcentaje de diferencia se explica en Cómo funciona. El valor de diffpct no puede ser menor que 1 ni mayor que 99. Al incrementar el valor diffpct, se incrementa la cantidad de resultados por medio de la inclusión de valores con una mayor proporción de diferencia en relación con su longitud. Si se omite, el porcentaje de diferencia no se considera durante el procesamiento de la función ISFUZZYDUP().
|
Salida
Lógico. Devuelve T (verdadero) si los valores de cadena son duplicados inexactos y F (falsos) en caso contrario.
Ejemplos
Ejemplos básicos
Devuelve F, porque se necesitan dos ediciones para transformar “Smith” en “Smythe”, pero el valor delevdist es solo 1:
ISFUZZYDUP("Smith";"Smythe"; 1; 99)
Devuelve T, porque se necesitan dos ediciones para transformar “Smith” en “Smythe” y el valor de levdist es 2:
ISFUZZYDUP("Smith";"Smythe"; 2; 99)
Devuelve T, porque no es necesaria ninguna edición para transformar “SMITH” en “smith” y el valor de levdist es 1 (la función ISFUZZYDUP( ) no distingue entre mayúsculas y minúsculas):
ISFUZZYDUP("SMITH";"smith"; 1; 99)
Devuelve un valor lógico (T o F) que indica si los valores individuales del campo Apellido son duplicados inexactos para la cadena "Smith":
ISFUZZYDUP(Apellido; "Smith"; 3; 99)
Ejemplos avanzados
Trabajo con el porcentaje de diferencia
El porcentaje de diferencia le proporciona una herramienta para reducir la cantidad de falsos positivos devueltos por ISFUZZYDUP( ).
Sin especificación de diffpct
Devuelve T, porque se necesitan cinco ediciones para transformar “abc” en “Smith” y el valor de levdist es 5:
ISFUZZYDUP("abc"; "Smith"; 5)
Con especificación de diffpct
Devuelve F, aun cuando "abc" está dentro de la distancia de Levenshtein especificada de "Smith", porque 5 ediciones/una longitud de cadena de 3 genera un porcentaje de diferencia del 167 %, lo cual supera el valor diffpct especificado de 99 %:
ISFUZZYDUP("abc"; "Smith"; 5; 99)
El porcentaje de diferencia se explica de forma exhaustiva en Cómo funciona.
Aislamiento de duplicados inexactos para "Smith"
Cree un filtro que aísle todos los valores del campo Apellido que sean duplicados inexactos para "Smith":
SET FILTER TO ISFUZZYDUP(Apellido; "Smith"; 3; 99)
Cambiar los valores de levdist o diffpct le permite ajustar la cantidad de diferencia en los valores filtrados.
Aislamiento de duplicados inexactos para un nombre de proveedor
Cree un filtro que aísle todos los valores del campo Nombre_proveedor que sean duplicados inexactos de "Pacific Lighting and Electrical Supply, Inc.":
SET FILTER TO ISFUZZYDUP(Nombre_proveedor; "Pacific Lighting and Electrical Supply, Inc."; 2; 99)
Mejore la efectividad del filtro usando otras funciones con la función ISFUZZYDUP( ).
Si utiliza ISFUZZYDUP( ) con OMIT( ), obtiene:
- Pacific Lighting and Electrical Supply, Inc.
- Pacific Lighting and Electrical Supply
- Pacific Lighting & Electrical Supply, Inc.
SET FILTER TO ISFUZZYDUP(OMIT(Nombre_proveedor; ".,&,and,Inc,Ltd,"); "Pacific Lighting Electrical Supply"; 2; 99)
Si utiliza ISFUZZYDUP( ) con SORTWORDS( ) y UPPER( ), obtiene:
- Pacific Lighting and Electrical Supply, Inc.
-
Pacific Electrical and Lighting Supply, Inc.
SET FILTER TO ISFUZZYDUP(SORTWORDS(UPPER(Nombre_proveedor)), SORTWORDS(UPPER("Pacific Lighting and Electrical Supply, Inc.")); 2; 99)
Si utiliza ISFUZZYDUP( ) con SORTWORDS( ), UPPER( ) y OMIT( ), obtiene:
- Pacific Lighting and Electrical Supply, Inc.
- Pacific Lighting and Electrical Supply
- Pacific Lighting & Electrical Supply, Inc.
- Pacific Electrical and Lighting Supply, Inc.
SET FILTER TO ISFUZZYDUP(SORTWORDS(UPPER(OMIT(Nombre_proveedor; ".,&,and,Inc,Ltd,"))); SORTWORDS(UPPER("Pacific Lighting Electrical Supply")); 2; 99)
Observaciones
Cuándo usar ISFUZZYDUP( )
Utilice la función ISFUZZYDUP( ) para buscar valores casi idénticos (duplicados inexactos) o buscar ortografía incoherente en los datos introducidos de forma manual.
Cómo funciona
La función ISFUZZYDUP( ) calcula la distancia de Levenshtein entre dos cadenas y calcula el porcentaje de diferencia.
ISFUZZYDUP( ) se evalúa como T (verdadero) si:
- La distancia de Levenshtein es inferior o igual al valor levdist.
- El porcentaje de diferencia es inferior o igual al valor diffpct (si se lo especificó).
Distancia de Levenshtein
La distancia de Levenshtein es un valor que representa el mínimo número de ediciones de caracteres individuales requerido para hacer que una cadena sea idéntica a otra.
Si desea obtener más información, consulte Función LEVDIST( ).
Porcentaje de diferencia
El porcentaje de diferencia es el porcentaje de la cadena más corta de las dos cadenas evaluadas que es diferente.
El porcentaje de diferencia es el resultado del siguiente cálculo interno de Analytics, que utiliza la distancia de Levenshtein entre las dos cadenas:
Distancia de Levenshtein / número de caracteres en la cadena más corta × 100 = porcentaje de diferencia
El uso del porcentaje de diferencia opcional ayuda a reducir la cantidad de falsos positivos devueltos por ISFUZZYDUP( ):
- El umbral superior de diffpct es 99 %, lo cual impide el reemplazo completo de la cadena a fin de convertirla en idéntica.
- Las cadenas que requieren un mayor número de ediciones en relación a su longitud se excluyen.
Consejos de uso
- Distinción entre mayúsculas y minúsculas Esta función no distingue entre mayúsculas y minúsculas; por lo tanto "SMITH" es equivalente a "smith".
- Espacios en blanco al final La función recorta automáticamente los espacios en blanco finales en los campos, por lo que no es necesario utilizar la función TRIM( ) cuando se especifica un campo como un parámetro.
- Ordenar elementos La función SORTWORDS( ) puede mejorar la efectividad del comando ISFUZZYDUP( ) ordenando secuencialmente los elementos individuales de los valores del campo.
Ordenar los elementos, como los componentes de una dirección, puede hacer que dos cadenas con las misma información, pero un formato diferente, se asemejen más una a otra. Si la semejanza es mayor, mejoran las posibilidades de que un par de cadenas sean detectadas como falsos duplicados.
- Eliminación de elementos genéricos Las funciones OMIT( ) y EXCLUDE( ) pueden mejorar la efectividad de la función ISFUZZYDUP( ) quitando elementos genéricos como "Corporación" o "Inc.", o caracteres como comas, puntos y el signo "&" de los valores del campo.
La eliminación de los elementos genéricos y la puntuación centra la comparación de cadenas de ISFUZZYDUP( ) únicamente en la porción de las cadenas donde puede haber una diferencia significativa.
Diferencia entre el comando FUZZYDUP y la función ISFUZZYDUP( )
El comando FUZZYDUP identifica todos los duplicados inexactos de un campo, los organiza en grupos no exhaustivos y envía resultados que, en conjunto, son exhaustivos.
La función ISFUZZYDUP( ) genera una lista única y exhaustiva de duplicados inexactos para un valor de caracteres específico.
Tanto el comando como la función identifican duplicados exactos. A diferencia del comando, no se pueden excluir los duplicados exactos cuando se utiliza la función.
Qué significa exhaustivo
Exhaustivo significa que todos los valores dentro del grado de diferencia especificado del valor de prueba se devuelven, independientemente de su posición en el campo de prueba relativo al valor de prueba.
La función ISFUZZYDUP( ) es útil si los grupos no exhaustivos generados por el comando FUZZYDUP no son convenientes para los fines de su análisis y necesita examinar directamente cada duplicado inexacto en busca de un valor de carácter específico.
Funciones relacionadas
- LEVDIST( ) proporciona un método alternativo para comparar cadenas sobre la base de la distancia de Levenshtein.
A diferencia de ISFUZZYDUP( ), LEVDIST( ) distingue entre mayúsculas y minúsculas de forma predeterminada.
- DICECOEFFICIENT( ) le quita el énfasis o ignora completamente la posición relativa de los caracteres o de los bloques de caracteres al comparar cadenas.
- SOUNDSLIKE( ) y SOUNDEX( ) comparan cadenas basándose en una comparación fonética (sonido) en lugar de una comparación ortográfica (escritura).