Coincidencia de registros con FindMatches de AWS Lake Formation - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Coincidencia de registros con FindMatches de AWS Lake Formation

nota

La coincidencia de registros no está disponible por el momento en las siguientes regiones de la consola de AWS Glue: Oriente Medio (EAU), Europa (España) (eu-south-2) y Europa (Zúrich) (eu-central-2).

AWS Lake Formation proporciona las capacidades de machine learning para crear transformaciones personalizadas para borrar sus datos. En la actualidad, hay una transformación disponible denominada FindMatches. La transformación FindMatches le permite identificar registros duplicados o coincidentes en el conjunto de datos, incluso cuando los registros no tienen un identificador único común y no coinciden exactamente los campos. Esto no requiere escribir ningún código ni saber cómo funciona machine learning. FindMatches puede resultar útil en muchos problemas diferentes, como:

  • Coincidencia de clientes: vinculación de registros de clientes en diferentes bases de datos de clientes, incluso cuando muchos campos de clientes no coincidan exactamente en las bases de datos (por ejemplo, ortografía de nombres diferentes, diferencias de direcciones, datos que faltan o no son precisos, etc.).

  • Coincidencia de productos: cotejar los productos del catálogo con otros orígenes de productos, como el catálogo de productos con el catálogo de un competidor, donde las entradas se estructuran de forma diferente.

  • Mejora de la detección de fraudes: identificar cuentas de cliente duplicadas, determinar cuándo una cuenta recién creada es (o podría ser) una coincidencia para un usuario fraudulento conocido anteriormente.

  • Otros problemas de coincidencia: coincidencia de direcciones, películas, listas de partes, etc. En general, si un ser humano pudiera examinar las filas de la base de datos y determinar que eran una coincidencia, existe una muy buena posibilidad de que la transformación FindMatches pueda ayudarle.

Puede crear estas transformaciones cuando cree un trabajo. La transformación que se crea se basa en un esquema de almacén de datos de origen y datos de ejemplo del conjunto de datos de origen que se etiquetan (a este proceso se lo denomina “enseñar” a una transformación). Los registros que se etiquetan deben estar presentes en el conjunto de datos de origen. En este proceso, se genera un archivo que se etiqueta y que luego se vuelve a cargar, y del que la transformación aprende en cierto modo. Después de enseñar a su transformación, puede invocarla desde su trabajo de AWS Glue basado en Spark (PySpark o Scala Spark) y utilizarla en otros scripts con un almacén de datos de origen compatible.

Una vez que se crea la transformación, se almacena en AWS Glue. En la consola de AWS Glue, puede administrar las transformaciones que cree. En el panel de navegación, en Integración de datos y ETL, en Herramientas de clasificación de datos > Coincidencia de registros, puede editar y entrenar su transformación de machine learning. Para obtener más información sobre la administración de transformaciones en la consola, consulte Uso de transformaciones de machine learning.

nota

Los trabajos de FindMatches de AWS Glue versión 2.0 utilizan el bucket de Amazon S3 aws-glue-temp-<accountID>-<region> para almacenar archivos temporales mientras la transformación procesa datos. Puede eliminar estos datos una vez finalizada la ejecución, ya sea en forma manual o mediante la configuración de una regla de ciclo de vida de Amazon S3.

Tipos de transformaciones de machine learning

Puede crear transformaciones de machine learning para limpiar sus datos. Puede llamar a estas transformaciones desde el script de ETL. Los datos pasan de transformación en transformación en una estructura de datos denominada DynamicFrame, que es una extensión de DataFrame de Apache Spark SQL. DynamicFrame contiene sus datos y usted hace referencia a su esquema para procesar los datos.

Los tipos de transformaciones de machine learning disponibles son los siguientes:

Búsqueda de coincidencias

Permite buscar registros duplicados en los datos de origen. Enseñe esta transformación de machine learning mediante el etiquetado de conjuntos de datos de ejemplo para indicar las filas que coinciden. La transformación de machine learning aprende qué filas deben ser coincidencias a medida que usted se lo va enseñando utilizando datos etiquetados de ejemplo. En función de cómo configure la transformación, se genera una de las siguientes salidas:

  • Una copia de la tabla de entrada además de una columna match_id completada con valores que indican conjuntos de coincidencia de registros. La columna match_id es un identificador arbitrario. Cualquier registro que tenga el mismo match_id se ha identificado como coincidente entre sí. Los registros con diferentes match_idno coinciden.

  • Una copia de la tabla de entrada con las filas duplicadas eliminadas. Si se detectan varios duplicados, se guarda el registro con el menor clave principal.

Búsqueda de coincidencias progresivas

La transformación Buscar coincidencias también se puede configurar para buscar coincidencias en los fotogramas existentes y progresivos y devolver como salida una columna que contiene un ID único por grupo de coincidencias.

Para obtener más información, consulte: Búsqueda de coincidencias progresivas

Uso de la transformación FindMatches

Puede utilizar la transformación FindMatches para buscar registros duplicados en los datos de origen. Se genera un archivo de etiquetado o se proporciona para ayudar a enseñar a la transformación.

nota

En la actualidad, las transformaciones de FindMatches que utilizan una clave de cifrado personalizada no se soportan en las siguientes regiones:

  • Asia-Pacífico (Osaka): ap-northeast-3

Para empezar con la transformación FindMatches, puede seguir los pasos que se indican a continuación. Para obtener un ejemplo más avanzado y detallado, consulte el blog sobre macrodatos de AWS: Armonizar los datos con la ML de FindMatches AWS Glue y AWS Lake Formation para crear una vista 360 del cliente.

Introducción al uso de la transformación de FindMatches

Siga estos pasos para iniciar la transformación de FindMatches:

  1. Cree una tabla en AWS Glue Data Catalog para los datos de origen que tienen que borrarse. Para obtener información sobre cómo crear un rastreador, consulte Trabajar de rastreadores en la consola de AWS Glue.

    Si los datos de origen son un archivo basado en texto como un archivo de valores separados por comas (CSV), tenga en cuenta lo siguiente:

    • Mantenga el archivo de etiquetado y el archivo CSV de registro de entrada en carpetas independientes. De lo contrario, el rastreador de AWS Glue podría considerarlos como varias partes de la misma tabla y crear tablas en el Catálogo de datos de forma incorrecta.

    • A menos que su archivo CSV incluya únicamente caracteres ASCII, asegúrese de que se utiliza UTF-8 sin codificación BOM (byte order mark, marca de orden de bytes) para los archivos CSV. Microsoft Excel a menudo añade una BOM al principio de archivos CSV UTF-8. Para eliminarlo, abra el archivo CSV en un editor de texto y vuelva a guardar el archivo como UTF-8 sin BOM.

  2. En la consola AWS Glue, cree un trabajo y elija el tipo de transformación de búsqueda de coincidencias.

    importante

    La tabla de origen de datos que elija para el trabajo no puede tener más de 100 columnas.

  3. AWS Glue Indique a que genere un archivo de etiquetado eligiendo Generate labeling file (Generar archivo de etiquetado). AWS Glue realiza la primera pasada al agrupar registros similares para cada uno de ellos para que labeling_set_id pueda revisar esas agrupaciones. Las coincidencias se etiquetan en la columna label.

    • Si ya tiene un archivo de etiquetado, es decir, un ejemplo de registros que indican filas de coincidencia, cargue el archivo en Amazon Simple Storage Service (Amazon S3). Para obtener más información sobre el formato del archivo de etiquetado, consulte Formato de archivo de etiquetado. Continúe con el paso 4.

  4. Descargue el archivo de etiquetado y etiquete el archivo tal y como se describe en la sección Etiquetado.

  5. Cargue el archivo de etiquetado corregido. AWS Glue ejecuta tareas para enseñar a la transformación cómo encontrar coincidencias.

    En la página de lista Machine learning transforms (Transformaciones de machine learning), elija la pestaña History (Historial). Esta página indica cuándo AWS Glue realiza las siguientes tareas:

    • Importar etiquetas

    • Exportar etiquetas

    • Generar etiquetas

    • Estimar calidad

  6. Para crear una mejor transformación, puede descargar, etiquetar y cargar de forma iterativa el archivo de etiquetado. En las ejecuciones iniciales, es posible que una gran cantidad de registros no coincidan. Sin embargo, AWS Glue aprende a medida que sigue enseñándole mediante la comprobación del archivo de etiquetado.

  7. Evalúe y ajuste su transformación mediante la evaluación del rendimiento y resultados de búsqueda de coincidencias. Para obtener más información, consulte Ajuste de transformaciones de machine learning en AWS Glue.

Etiquetado

Cuando FindMatches genera un archivo de etiquetado, los registros se seleccionan en la tabla de origen. En función del entrenamiento anterior, FindMatches identifica los registros más valiosos de los que puede aprender.

La acción de etiquetado consiste en editar un archivo (le recomendamos que utilice una hoja de cálculo como Microsoft Excel) y agregar en la columna label identificadores o etiquetas que identifiquen los registros coincidentes y no coincidentes. Es importante disponer de una definición clara y coherente de las coincidencias en los datos de origen. FindMatches aprende a partir de los registros que se designan (o no) como coincidencias y utiliza estas decisiones para aprender a buscar registros duplicados.

Cuando FindMatches genere un archivo de etiquetado, se generarán aproximadamente 100 registros. Estos 100 registros normalmente se dividen en 10  conjuntos de etiquetado, cada uno de los cuales se identifica mediante un labeling_set_id único generado por FindMatches. Cada conjunto de etiquetado debe considerarse como una tarea de etiquetado independiente de los demás conjuntos de etiquetado. Su tarea consiste en identificar registros coincidentes y no coincidentes dentro de cada conjunto de etiquetado.

Sugerencias para editar archivos de etiquetado en una hoja de cálculo.

Cuando edite el archivo de etiquetado en una aplicación de hoja de cálculo, tenga en cuenta lo siguiente:

  • Es posible que el archivo no se abra con los campos de columna totalmente expandidos. Puede que tenga que expandir las columnas labeling_set_id y label para ver el contenido de esas celdas.

  • Si la columna de clave principal es un nombre, como un tipo de datos long, es posible que la hoja de cálculo la interprete como un número y cambie el valor. Este valor de la clave debe tratarse como texto. Para solucionar este problema, dé formato a todas las celdas en la columna de clave principal como datos de texto.

Formato de archivo de etiquetado

El archivo de etiquetado que AWS Glue genera para enseñar a su transformación FindMatches utiliza el siguiente formato. Si genera su propio archivo de AWS Glue, también debe utilizar este formato:

  • Es un archivo de valores separados por comas (CSV).

  • Debe estar codificado en UTF-8. Si edita el archivo con Microsoft Windows, se puede codificar con cp1252.

  • Debe ser una ubicación de Amazon S3 para transferirlo a AWS Glue.

  • Use una cantidad de filas moderada para cada tarea de etiquetado. Se recomiendan entre 10 y 20 filas por tarea, aunque se considera aceptable utilizar entre 2 y 30 filas. No se recomiendan tareas de más de 50 filas, ya que pueden generar resultados deficientes o errores en el sistema.

  • Si dispone de datos que ya están etiquetados y que se componen de pares de registros etiquetados como «coincidencia» o «no coincidencia», puede utilizarlos. Estos pares etiquetados pueden representarse como conjuntos de etiquetado de tamaño 2. En este caso, etiquete los dos registros, por ejemplo, con una letra «A» si coinciden y, si no coinciden, etiquete uno como «A» y otro como «B».

    nota

    Puesto que dispone de columnas adicionales, el archivo de etiquetado dispone de un esquema diferente de un archivo que contiene sus datos de origen. Coloque el archivo de etiquetado en una carpeta diferente de cualquier archivo CSV de entrada de transformación de manera que el rastreador de AWS Glue no lo tenga en cuenta cuando cree las tablas en el Catálogo de datos. De lo contrario, las tablas creadas por el rastreador de AWS Glue podrían representar incorrectamente sus datos.

  • AWS Glue requiere las dos primeras columnas (labeling_set_id y label). Las columnas restantes deben coincidir con el esquema de los datos que se van a procesar.

  • En cada labeling_set_id, debe identificar todos los registros coincidentes utilizando la misma etiqueta. Una etiqueta es una cadena única que se incluye en la columna label. Le recomendamos utilizar etiquetas que contengan caracteres simples, como A, B, C, etc. Las etiquetas distinguen mayúsculas y minúsculas y se colocan en la columna label.

  • Se entiende que las filas que contienen el mismo labeling_set_id y la misma etiqueta se etiquetan como coincidencia.

  • Se entiende que las filas que contienen el mismo labeling_set_id y una etiqueta diferente se etiquetan como no coincidencia.

  • Se entiende que las filas que contienen un labeling_set_id diferente no transmiten información que permita determinar si es o no una coincidencia.

    A continuación se muestra un ejemplo de etiquetado de los datos:

    labeling_set_id etiqueta first_name last_name Birthday
    ABC123 A John Doe 04/01/1980
    ABC123 B Jane Smith 04/03/1980
    ABC123 A Johnny Doe 04/01/1980
    ABC123 A Jon Doe 04/01/1980
    DEF345 A Richard Jones 12/11/1992
    DEF345 A Rich Jones 11/12/1992
    DEF345 B Sarah Jones 12/11/1992
    DEF345 C Richie Jones Jr. 05/06/2017
    DEF345 B Sarah Jones-Walker 12/11/1992
    GHI678 A Robert Miller 1/3/1999
    GHI678 A Bob Miller 1/3/1999
    XYZABC A William Robinson 2/5/2001
    XYZABC B Andrew Robinson 2/5/1971
  • En el ejemplo anterior identificamos a John/Johnny/Jon Doe como una coincidencia y enseñamos al sistema que estos registros no coinciden con Jane Smith. Por otro lado, enseñamos al sistema que Richard y Rich Jones son la misma persona, pero que estos registros no coinciden con Sarah Jones/Jones-Walker ni Richie Jones Jr.

  • Como puede ver, el alcance de las etiquetas está limitado por el labeling_set_id. Por lo tanto, las etiquetas no superan los límites de labeling_set_id. Por ejemplo, una etiqueta "A" en labeling_set_id 1 no tiene ninguna relación con la etiqueta "A" en labeling_set_id 2.

  • Si un registro no tiene coincidencias dentro de un conjunto de etiquetado, debe asignarle una etiqueta única. Por ejemplo, Jane Smith no coincide con ningún registro del conjunto de etiquetado ABC123, por lo que es el único registro de ese conjunto de etiquetado con la etiqueta B.

  • El conjunto de etiquetado «GHI678" demuestra que un conjunto de etiquetado puede componerse exclusivamente de dos registros a los que se les da la misma etiqueta para indicar que coinciden. Del mismo modo, «XYZABC» muestra dos registros con etiquetas diferentes para indicar que no coinciden.

  • Tenga en cuenta que a veces los conjuntos de etiquetado pueden no contener coincidencias (es decir, cada registro del conjunto de etiquetado tiene una etiqueta diferente) o tener todos los registros iguales (todos con la misma etiqueta). Esto es correcto siempre que, colectivamente, los conjuntos de etiquetado contengan ejemplos de registros que sean iguales y diferentes, según sus criterios.

importante

Confirme que el rol de IAM que transfiere a AWS Glue tenga acceso al bucket de Amazon S3 que contiene el archivo de etiquetado. Convencionalmente, las políticas de AWS Glue conceden permiso a buckets o carpetas de Amazon S3 cuyos nombres tienen el prefijo aws-glue-. Si sus archivos de etiquetado están en una ubicación distinta, agregue permiso a esa ubicación en el rol de IAM.