Comando FUZZYDUP

Información de concepto

Detectar duplicados inexactos

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 campo <...n>|OTHER ALL <EXCLUDE nombre_campo <...n>>> LEVDISTANCE valor <DIFFPCT porcentaje> <RESULTSIZE porcentaje> <EXACT> <IF prueba> 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 campo<...n> | OTHER ALL

opcional

Uno o más campos adicionales para incluir en la salida.

  • OTHER campo <...n> incluya el o los campos especificados

    Los campos se incluyen en el orden en el que usted los indica.

  • OTHER ALL incluya todos los campos de la tabla que no se especifican como el campo clave.

    Los campos se incluyen en el orden en el que aparecen en el formato de tabla.

EXCLUDE nombre_campo

opcional

Solo tiene validez al usar OTHER ALL.

El o los campos que se deben excluir del comando. EXCLUDE le permite ajustar OTHER ALL, excluyendo campos específicos.

EXCLUDE debe ir inmediatamente a continuación de OTHER ALL. Por ejemplo:

OTHER ALL EXCLUDE campo_1 campo_2
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.
OPEN Lista_empleados
FUZZYDUP ON Apellido OTHER Nombre NroEmpl LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Apellido_inexacto" OPEN

Observaciones

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 para un valor único de caracteres, el comando FUZZYDUP identifica todos los duplicados inexactos en un campo, los organiza en grupos no exhaustivos y genera los resultados.

Si desea obtener información detallada sobre la forma en la que funciona este comando, consulte Análisis de los falsos duplicados.

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. Por lo tanto, los grupos pueden ser no exhaustivos, pero los resultados, en su totalidad, son exhaustivos.

Si para su análisis es importante generar un lista única y exhaustiva de duplicados inexactos para un valor específico del campo de prueba, puede usar la función ISFUZZYDUP( ).

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, el control del tamaño de los resultado y los grupos de duplicados inexactos, consulte Análisis de los falsos duplicados.

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

Hay tres técnicas que pueden mejorar de manera significativa la efectividad del comando FUZZYDUP:

  • ordenar los elementos individuales en los valores del campo de prueba
  • quitar los elementos genéricos de los valores del campo de prueba
  • concatenar los campos de prueba

Estas técnicas generan conjuntos más concentrados de resultados, con menos falsos positivos y más verdaderos positivos. Puede usar las técnicas de manera independiente o combinadas.

Ordenar los elementos individuales en los valores del campo de prueba

La función SORTWORDS( ) puede mejorar la efectividad del comando FUZZYDUP ordenando secuencialmente los elementos individuales de los valores del campo de prueba.

Ordenar los elementos, como los componentes de una dirección, puede hacer que dos cadenas con la 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.

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

Si desea ver un video con una descripción general de SORTWORDS( ), vea Fuzzy Matching Using SORTWORDS() (Coincidencias inexactas con SORTWORDS()) (solo disponible en inglés).

Quitar los elementos genéricos de los valores del campo de prueba

La función OMIT( ) puede mejorar la efectividad del comando FUZZYDUP quitando los elementos genéricos, como "Corporation" o "Inc.", o los caracteres como comas, puntos y el símbolo "&", de los valores del campo de prueba.

La eliminación de los elementos genéricos y la puntuación centra la comparación de cadenas de FUZZYDUP únicamente en la porción de las cadenas donde puede haber una diferencia significativa.

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

Concatenar los campos de prueba

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, si se concatena el campo Domicilio y el campo Ciudad, se evitan las coincidencias inexactas entre las direcciones de distintas ciudades:

FUZZYDUP ON ALLTRIM(Domicilio)+ALLTRIM(Ciudad) OTHER Domicilio Ciudad Nombre_proveedor LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Duplicados_inexactos_nombre_proveedor" OPEN

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).