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 diferencias; 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.

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.
  • Eliminación de elementos genéricos La función OMIT( ) puede mejorar la eficacia de la función ISFUZZYDUP( ) quitando elementos genéricos como "Corporación" o "Inc." de los valores del campo.

    La eliminación de elementos genéricos enfoca la comparación de cadenas ISFUZZYDUP( ) únicamente en la parte de las cadenas donde puede ocurrir 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 y envía resultados no exhaustivos.

La función ISFUZZYDUP( ) identifica una lista exhaustiva de duplicados inexactos para un valor de caracteres único.

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 resultados no exhaustivos generados por el comando FUZZYDUP no son suficientes 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).
Guía de creación de scripts de ACL 14.1