Comando FUZZYJOIN

Información de concepto

Unión de inexactos

Utiliza la correspondencia inexacta para combinar campos de dos tablas de Analytics en una nueva tabla única de Analytics.

Nota

Para detectar los valores casi idénticos en un campo de caracteres único (duplicados inexactos), consulte Comando FUZZYDUP.

Para unir tablas usando valores de campo clave con una correspondencia exacta, consulte Comando JOIN.

Sintaxis

FUZZYJOIN {DICE PERCENT porcentaje NGRAM longitud_n-grama|LEVDISTANCE DISTANCE valor} PKEY campo_clave_primario SKEY campo_clave_secundario {FIELDS campos_primarios|FIELDS ALL <EXCLUDE campos_primarios <...n>>} <WITH campos_secundarios|WITH ALL <EXCLUDE campos_secundarios <...n>>> <IF prueba> <OPEN> TO nombre_tabla <FIRSTMATCH> <WHILE prueba> <FIRST rango|NEXT rango> <APPEND>

Nota

No puede ejecutar el comando FUZZYJOIN de forma local en una tabla de servidor.

Debe especificar el nombre del comando FUZZYJOIN completo. No puede abreviarlo.

Parámetros

Nombre Descripción
DICE PERCENT porcentaje NGRAM longitud_n-grama | LEVDISTANCE DISTANCE valor

El algoritmo de correspondencia inexacta que se debe usar.

DICE utiliza el algoritmo del coeficiente de Dice

  • PERCENT porcentaje el coeficiente de Dice mínimo permitido de dos cadenas para que se las considere como duplicados inexactos¡

    Especifique una fracción decimal, de 0,0000 a 1,0000 (por ejemplo: 0,7500). Utilice un máximo de cuatro lugares decimales.

    Al reducir el valor, aumenta la cantidad de correspondencias porque se incluyen correspondencias con un mayor grado de inexactitud; es decir, cadenas que difieren más entre sí.

  • NGRAM longitud_n-grama la longitudn-grama que se debe usar

    Especifique un número entero, 1 o superior.

    El incremento de la longitud n-grama hace que el criterio para la similitud entre ambas cadenas sea más estricto.Los

    n-gramas son subcadenas (bloques de caracteres) que se superponen y en los que las cadenas de comparación se dividen como parte del cálculo del coeficiente de Dice.

    Nota

    Cuando se especifica DICE, el comando FUZZYJOIN utiliza la función DICECOEFFICIENT( ) en un enunciado IF para unir de manera condicional los valores del campo clave. Si desea obtener información detallada sobre la función, consulte Función DICECOEFFICIENT( ).

LEVDISTANCE utilice el algoritmo de distancia de Levenshtein

  • DISTANCE valor la máxima distancia de Levenshtein permitida entre dos cadenas para que se las considere un duplicado inexacto

    Especifique un número entero, 1 o superior.

    Al incrementar el valor, aumenta la cantidad de correspondencias porque se incluyen valores con un mayor grado de inexactitud; es decir valores que difieren más entre sí.

    Nota

    Cuando se especifica LEVDISTANCE, el comando FUZZYJOIN utiliza la función LEVDIST( ) en un enunciado IF para unir de manera condicional los valores del campo clave. Si desea obtener información detallada sobre la función, consulte Función LEVDIST( ).

    A diferencia de la función, el algoritmo de la distancia de Levenshtein del comando FUZZYJOIN recorta automáticamente los espacios en blanco iniciales y finales, y no distingue entre mayúsculas y minúsculas.

PKEY campo_clave_primario

La expresión o el campo clave de caracteres de la tabla primaria.

Puede especificar únicamente un campo clave primario.

SKEY campo_clave_secundario

La expresión o el campo clave de caracteres de la tabla secundaria.

Puede especificar únicamente un campo clave secundario.

FIELDS campos_primarios | FIELDS ALL

Los campos o expresiones de la tabla primaria que deben incluirse en la tabla de salida unida.

  • FIELDS campos_primarios incluya el o los campos especificados

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

  • FIELDS ALL incluya todos los campos de la tabla

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

Nota

Debe especificar explícitamente el campo clave primario si desea incluirlo en la tabla unida. Si especifica FIELDS ALL, también se lo incluye.

EXCLUDE campos_primarios

opcional

Solo tiene validez al realizar una unión de inexactos utilizando FIELDS ALL.

El o los campos que se deben excluir del comando. EXCLUDE le permite ajustar la palabra clave de ALL, excluyendo campos especificados.

EXCLUDE debe estar inmediatamente después de FIELDS ALL o de la ocurrencia final de la palabra clave de ALL si incluye campos de una o más tablas relacionadas. Por ejemplo:

FIELDS ALL EXCLUDE campo_1 campo_2
FIELDS ALL nombre_tabla_relacionada.ALL EXCLUDE campo_1 campo_2

WITH campos_secundarios | WITH ALL

opcional

Los campos o expresiones de la tabla secundaria que deben incluirse en la tabla de salida unida.

  • WITH campos_secundarios incluya el o los campos especificados

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

  • WITH ALL incluya todos los campos de la tabla

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

Nota

Debe especificar explícitamente el campo clave secundario si desea incluirlo en la tabla unida. Si especifica WITH ALL, también se lo incluye.

EXCLUDE campos_secundarios

opcional

Solo tiene validez al realizar una unión de inexactos utilizando WITH ALL.

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

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

WITH ALL EXCLUDE campo_1 campo_2

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

Nota

La condición IF puede hacer referencia a la tabla primaria, a la tabla secundaria o a ambas.

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.

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.

FIRSTMATCH

opcional

Especifica que cada valor clave primario se une exclusivamente a la primera instancia de cualquier clave secundaria correspondiente.

Si la primera instancia es una correspondencia exacta, las correspondencias inexactas posteriores del valor clave primario no se incluyen en la tabla de salida unida.

Si omite FIRSTMATCH, el comportamiento predeterminado de FUZZYJOIN es unir cada valor clave primario con todas las instancias de cualquier correspondencia de clave secundaria.

FIRSTMATCH es útil si solo desea saber si existe alguna correspondencia (exacta o inexacta) entre dos tablas, y desea evitar el tiempo de procesamiento necesario para identificar todas las correspondencias.

También puede usar FIRSTMATCH si está seguro de que, como máximo, existe solo una correspondencia en la tabla secundaria para cada valor de clave primaria.

WHILE prueba

opcional

Una expresión condicional que debe ser verdadera para procesar cada registro. El comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al final de la tabla.

Nota

Si usa WHILE junto con FIRST o NEXT, el procesamiento de registros se detiene al llegar a un límite.

FIRST rango | NEXT rango

opcional

La cantidad de registros que se procesarán:

  • FIRST comienza a procesar desde el primer registro hasta que se llega al número de registros especificado
  • NEXT comienza a procesar desde el registro seleccionado actualmente hasta que se llega al número de registros especificado

Utilice intervalo para especificar la cantidad de registros que se deben procesar.

Si omite FIRST y NEXT, se procesan todos los registros de forma predeterminada.

APPEND

opcional

Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el archivo.

Nota

Debe asegurarse de que la estructura de la salida del comando y del archivo existente sean idénticas:

  • los mismos campos
  • el mismo orden de campos
  • los campos coincidentes son de la misma longitud
  • los campos coincidentes tienen el mismo tipo de datos

Analytics anexa la salida a un archivo existente sin importar cuál sea su estructura. Si la estructura de la salida y la del archivo existente no coinciden, es posible que los datos que se obtengan estén incompletos, mezclados o sean imprecisos.

ISOLOCALE código_lugar

opcional

Nota

Aplicable únicamente en la edición Unicode de Analytics.

El idioma (configuración regional) del sistema en el formato idioma_país. Por ejemplo, para francés de Canadá, ingrese el código fr_ca.

Use los siguientes códigos:

  • idioma códigos de idioma estándar ISO 639
  • país códigos de país estándar ISO 3166

    Si no especifica un código de país, se utiliza el país predeterminado para el idioma.

Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sistema.

Ejemplos

Utilice la correspondencia inexacta para unir dos tablas como una forma de descubrir empleados que también puedan ser proveedores

El siguiente ejemplo une las tabla Empmast y Proveedor utilizando el domicilio como el campo clave común (los campos Domicilio y Calle_proveedor).

El comando FUZZYJOIN crea una nueva tabla con registros primarios y secundarios con una correspondencia exacta o una correspondencia inexacta. El resultado es una lista de todos los empleados y proveedores que tienen el mismo domicilio o un domicilio similar.

FUZZYJOIN con el algoritmo de coeficiente de Dice

OPEN Empmast PRIMARY
OPEN Proveedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Domicilio SKEY Calle_proveedor FIELDS Número_empleado Nombre Apellido Domicilio WITH Número_proveedor Nombre_proveedor Calle_proveedor OPEN TO "Correspondencia_empleado_proveedor"

FUZZYJOIN con el algoritmo de distancia de Levenshtein

OPEN Empmast PRIMARY
OPEN Proveedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Domicilio SKEY Calle_proveedor FIELDS Número_empleado Nombre Apellido Domicilio WITH Número_proveedor Nombre_proveedor Calle_proveedor OPEN TO "Correspondencia_empleado_proveedor"

Incluir todos los campos

Esta versión del comando FUZZYJOIN incluye todos los campos de las tablas primaria y secundaria en la tabla de salida unida.

OPEN Empmast PRIMARY
OPEN Proveedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Domicilio SKEY Calle_proveedor FIELDS ALL WITH ALL OPEN TO "Correspondencia_empleado_proveedor"

Mejorar la efectividad de la correspondencia de inexactos

El siguiente ejemplo utiliza la función SORTWORDS( ) para mejorar la efectividad de la correspondencia de inexactos entre los campos Domicilio y Calle_proveedor. El uso de la función UPPER( ) garantiza que el uso de mayúsculas y minúsculas no afecte el ordenamiento de los elementos en los valores del campo clave.

OPEN Empmast PRIMARY
OPEN Proveedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY SORTWORDS(UPPER(Domicilio)) SKEY SORTWORDS(UPPER(Calle_proveedor)) FIELDS Número_empleado Nombre Apellido Domicilio WITH Número_proveedor Nombre_proveedor Calle_proveedor OPEN TO "Correspondencia_empleado_proveedor"

Observaciones

Si desea obtener más información sobre la forma en la que funciona este comando, consulte Unión de inexactos.

Coincidir mayúsc.-minúsc.

El comando FUZZYJOIN no distingue entre mayúsculas y minúsculas, sin importar qué algoritmo de correspondencia inexacta utilice. Por lo tanto, "SMITH" equivale a "smith."

Espacios en blanco iniciales y finales

El comando FUZZYJOIN recorta automáticamente los espacios en blanco al principio y al final de los campos, sin importar qué algoritmo de correspondencia utilice. No es necesario usar las funciones TRIM( ) o ALLTRIM( ) al especificar los campos clave primario y secundario.

Mejorar la efectividad de FUZZYJOIN

Hay tres técnicas que pueden mejorar de manera significativa la eficacia del comando FUZZYJOIN:

  • ordenar los elementos individuales en los valores del campo clave primario y secundario
  • quitar los elementos genéricos de los valores del campo clave primario y secundario
  • armonizar los valores del campo clave primario y secundario

Estas técnicas le permiten usar ajustes de inexactitud más estrictos y obtener las mismas coincidencias inexactas, al tiempo que se reduce la cantidad de coincidencias falso positivas. Puede usar las técnicas de manera independiente o combinadas.

Ordenar los elementos individuales en los valores del campo clave

La función SORTWORDS( ) puede mejorar la eficacia del comando FUZZYJOIN ordenando secuencialmente los elementos individuales del campo clave primario y secundario.

Ordenar los elementos, como los componentes de una dirección, puede hacer que los valores del campo con la misma información, pero con un formato diferente, se asemejan más entre sí. Una mayor semejanza mejora las posibilidades de que los valores del campo clave sean seleccionados como duplicados inexactos.

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

Nota

Ordenar los elementos de los valores del campo clave es más conveniente para unir inexactos utilizando el algoritmo de distancia de Levenshtein.

Ordenar los elementos al unir inexactos con el algoritmo del coeficiente de Dice puede no ser beneficioso. Pruebe un conjunto de datos de muestra antes de decidir si usar SORTWORDS( ) junto con el algoritmo del coeficiente de Dice en un entorno de producción.

¡Precaución!

Si utiliza SORTWORDS( ) junto con el comando FUZZYJOIN, debe aplicar SORTWORDS( ) a ambas cadenas o ambos campos que se comparan.

Quitar elementos genéricos de los valores del campo clave

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

La eliminación de los elementos genéricos y la puntuación centra la correspondencia inexacta únicamente en la parte de los valores del campo clave donde puede haber una diferencia significativa.

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

Armonizar los valores del campo clave

Las funciones REPLACE( ) o REGEXREPLACE( ) pueden mejorar la efectividad del comando FUZZYJOIN armonizando las diferentes formas del mismo elemento en los valores del campo primario y secundario. Por ejemplo, puede armonizar "Street", "St." y "St" para utilizar siempre el valor "St".

Armonizar los elementos puede hacer que los valores del campo clave con la misma información, pero un formato diferente, se asemejen más entre sí. Una mayor semejanza mejora las posibilidades de que los valores del campo clave sean seleccionados como duplicados inexactos.

Si desea obtener más información, consulte Función REPLACE( ) para realizar reemplazos directos y Función REGEXREPLACE( ) para realizar reemplazos más complejos.