Comando FUZZYJOIN
Información de concepto
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
LEVDISTANCE utilice el algoritmo de distancia de Levenshtein
|
| 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.
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.
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:
|
|
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:
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:
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:
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.