Comando FUZZYDUP

Detecta valores casi idénticos (duplicados inexactos) en un campo de caracteres.

Nota

Para utilizar la correspondencia inexacta a fin de combinar campos de dos tablas de Analytics en una nueva tabla única de Analytics, consulte Comando FUZZYJOIN.

Sintaxis

FUZZYDUP ON campo_clave <OTHER campos> LEVDISTANCE valor <DIFFPCT porcentaje> <RESULTSIZE porcentaje> <EXACT> <IF test> TO nombre_tabla <LOCAL> <OPEN>

Parámetros

Nombre Descripción
ON campo_clave El campo de caracteres o la expresión que se probará para detectar duplicados inexactos.
OTHER campos

opcional

Una lista de campos o expresiones que se incluirán en la salida.

LEVDISTANCE valor

La máxima distancia de Levenshtein permitida entre dos cadenas para que se puedan identificar como duplicados inexactos e incluir en los resultados.

El valor de LEVDISTANCE no puede ser menor que 1 ni mayor que 10. Al incrementar el valor de LEVDISTANCE aumenta la cantidad de resultados porque se incluyen valores con un mayor grado de diferencias; es decir valores que difieren más entre sí.

Si desea obtener más información, consulte Comportamiento de FUZZYDUP.

DIFFPCT porcentaje

opcional

Un umbral que limita el 'porcentaje de diferencia' o la proporción de una cadena que puede ser diferente.

El porcentaje resultante de un cálculo interno de Analytics realizado sobre los posibles pares duplicados inexactos debe ser menor que o igual al valor de DIFFPCT para que el par se incluya en los resultados. El valor de DIFFPCT no puede ser menor que 1 ni mayor que 99.

Si se omite DIFFPCT, el umbral se desactiva y el porcentaje de diferencia no se tiene en cuenta durante el procesamiento del comando FUZZYDUP.

Si desea obtener más información, consulte Comportamiento de FUZZYDUP.

RESULTSIZE porcentaje

opcional

El tamaño máximo del conjunto de resultados de salida como un porcentaje de la cantidad de registros del campo clave.

Por ejemplo, para un campo clave con 50.000 registros, un RESULTSIZE de 3 finalizaría con el procesamiento si los resultados superan los 1500 duplicados inexactos (50.000 x 0,03). No se produce ninguna tabla de salida si el procesamiento finaliza.

El valor de RESULTSIZE no puede ser menor que 1 ni mayor que 1000 (mil) por ciento. El límite de 1000 % es para adaptarse a la naturaleza de la coincidencia de muchos a muchos, que puede producir resultados más numerosos que el conjunto de datos de prueba original.

Si se omite RESULTSIZE, el umbral se desactiva y tamaño del resultado no se tiene en cuenta durante el procesamiento del comando FUZZYDUP.

¡Precaución!

La omisión de RESULTSIZE puede generar un conjunto de resultados excesivamente grande que tarda mucho tiempo en procesarse o que puede ocasionar que se exceda la memoria disponible, lo cual finaliza el procesamiento. Omita RESULTSIZE solo si está seguro de que los resultados tendrán un tamaño manejable.

EXACT

opcional

Incluye duplicados exactos, así como duplicados inexactos en los resultados.

IF prueba

opcional

Una expresión condicional que debe ser verdadera para procesar cada registro. El comando se ejecuta únicamente en los registros que cumplen la condición.

Nota

El parámetro IF se evalúa únicamente con los registros que quedan en la tabla después de aplicar los parámetros de alcance (WHILE, FIRST, NEXT).

TO nombre_tabla

El lugar al que se deben enviar los resultados del comando:

  • nombre_tabla guarda los resultados en una tabla de Analytics

    Especifique el nombre_tabla como una cadena entre comillas con la extensión de archivo .FIL. Por ejemplo: TO "Salida.FIL"

    Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la carpeta que contiene el proyecto de Analytics.

    Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una carpeta existente o una diferente:

    • TO "C:\Salida.FIL"
    • TO "Resultados\Salida.FIL"

    Nota

    Los nombres de las tablas tienen un límite de 64 caracteres alfanuméricos, sin incluir la extensión .FIL. El nombre puede incluir un guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni espacios. El nombre no puede comenzar con un número.

LOCAL

opcional

Guarda el archivo de salida en la misma ubicación que el proyecto de Analytics.

Nota

Aplicable únicamente al ejecutar el comando en una tabla de servidor con un archivo de salida que es una tabla de Analytics.

El parámetro LOCAL debe ir inmediatamente después del parámetro TO.

OPEN

opcional

Abre la tabla creada por el comando después de la ejecución del comando. Solo es válido si el comando crea una tabla de salida.

Variables de salida de Analytics

Nombre Contiene
GAPDUPn

La cantidad total de grupos de duplicados inexactos, faltantes o duplicados identificados por el comando.

Ejemplos

Comprobar un campo de apellido en busca de duplicados inexactos

Usted somete a prueba un campo de apellidos para detectar duplicados inexactos (el campo Apellido de la tabla Lista_empleados en ACL DATA\Archivos de datos de muestra\Datos_empleados_Metaphor.ACL). Los resultados se envían a una nueva tabla Analytics.

  • Además del campo de prueba, otros campos se incluyen en los resultados.
  • La máxima distancia de Levenshtein permitida es 1.
  • La proporción de una cadena que puede ser diferente está limitada a 50 %.
  • El tamaño de los resultados está limitado al 20 % del tamaño del campo de prueba.
  • Además de los duplicados inexactos, se incluyen los duplicados exactos.
FUZZYDUP ON Apellido OTHER Nombre NroEmpl LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Apellido_inexacto" OPEN

Observaciones

Nota

Si desea obtener más información sobre la forma en la que funciona este comando, consulte Guía de ayuda.

Cómo funciona

El comando FUZZYDUP busca valores casi idénticos (duplicados inexactos) o encuentra ortografía inconsistente en los datos ingresados manualmente.

A diferencia de la función ISFUZZYDUP( ), que identifica una lista exhaustiva de duplicados inexactos que difieren por un solo carácter, el comando FUZZYDUP identifica todos los duplicados inexactos en un campo, los organiza en grupos y genera resultados no exhaustivos.

Qué significa no exhaustivo

No exhaustivo significa que los grupos de duplicados inexactos individuales en los resultados pueden no contener todos los duplicados inexactos en un campo de prueba que estén dentro del grado de diferencia especificado por el propietario del grupo. Sin embargo, si el propietario de un grupo es un duplicado inexacto de otro valor en el campo de prueba, los dos valores aparecerán juntos en un grupo en algún lugar de los resultados.

Si producir una lista exhaustiva de duplicados inexactos para un valor específico en el campo de prueba es importante para su análisis, puede utilizar la función ISFUZZYDUP( ) para este fin.

Comportamiento de FUZZYDUP

El comando FUZZYDUP tiene dos parámetros que le permiten controlar el grado de diferencia entre los duplicados inexactos y el tamaño de los resultados:

  • LEVDISTANCE
  • DIFFPCT

Es posible que tenga que probar diferentes combinaciones de valores de configuración para estos dos parámetros a fin de determinar qué funciona mejor para un conjunto de datos en particular.

LEVDISTANCE (distancia de Levenshtein)

Cuando procesa los datos, el comando FUZZYDUP calcula la distancia de Levenshtein entre cada par evaluado de cadenas en el campo de prueba y calcula el porcentaje de diferencia. 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( ).

DIFFPCT (Porcentaje de diferencia)

El porcentaje de diferencia es el porcentaje de la cadena más corta de las dos cadenas evaluadas que es diferente y es 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

Más información

Para obtener información detallada acerca de la configuración de la diferencia de los duplicados inexactos, sobre cómo controlar el tamaño de los resultados y sobre los grupos de duplicados inexactos, consulte la Descripción general de los duplicados inexactos.

Distinción entre mayúsculas y minúsculas

El comando FUZZYDUP no distingue entre mayúsculas y minúsculas; por lo tanto, "SMITH" es equivalente a "smith".

Recorte automático de los espacios en blanco al final

El comando FUZZYDUP recorta automáticamente los espacios en blanco en el campo_clave, por lo que no es necesario utilizar las funciones ALLTRIM( ) o TRIM( ) cuando se especifica un campo clave para el campo_clave.

Si concatena campos para campo_clave, debe usar ALLTRIM( ), tal como se muestra a continuación.

Mejorar la efectividad de FUZZYDUP

Concatenar campos

Concatenar dos o más campos de prueba puede mejorar la efectividad del comando FUZZYDUP al aumentar el grado de unicidad de los valores de prueba.

Por ejemplo:

FUZZYDUP ON ALLTRIM(Nombre)+ALLTRIM(Apellido) OTHER Nombre Apellido NroEmpl LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Nombre_Apellido_inexacto" OPEN

La función OMIT( )

La función OMIT( ) también puede mejorar la eficacia del comando al eliminar elementos genéricos como "Corporación" o "Inc." de los valores del campo.

La eliminación de los elementos genéricos centra la comparación de cadenas de FUZZYDUP sólo en la porción de las cadenas donde puede ocurrir una diferencia significativa.

Si desea obtener más información, consulte Función OMIT( ).

Otros métodos de comparación de cadenas

  • La función DICECOEFFICIENT( ) ofrece un método de comparación de cadenas que le quita el énfasis o ignora completamente la posición relativa de los caracteres o de los bloques de caracteres.
  • Las funciones SOUNDSLIKE( ) y SOUNDEX( ) proporcionan un método para comparar cadenas basándose en una comparación fonética (sonido) en lugar de una comparación ortográfica (escritura).