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