Corrispondenza dei record con FindMatches AWS Lake Formation - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Corrispondenza dei record con FindMatches AWS Lake Formation

Nota

La Corrispondenza dei record non è attualmente disponibile nelle seguenti regioni della console AWS Glue: Medio Oriente (Emirati Arabi Uniti), Europa (Spagna) (eu-south-2) ed Europa (Zurigo) (eu-central-2).

AWS Lake Formation fornisce caratteristiche di machine learning per creare trasformazioni personalizzate per ripulire i dati. Attualmente è disponibile una trasformazione denominata FindMatches. La trasformazione FindMatches consente di identificare record duplicati o corrispondenti nel set di dati, anche quando i record non dispongono di un identificatore univoco comune e nessun campo corrisponde esattamente. Ciò non richiede la scrittura di codice o la conoscenza del funzionamento del machine learning. FindMatches può essere utile in molti problemi diversi, ad esempio:

  • Matching Customers (Corrispondenza di clienti): collegamento di record dei clienti tra diversi database, anche quando molti campi non corrispondono esattamente tra i database (ad es. diversa ortografia dei nomi, differenze di indirizzo, dati mancanti o imprecisi e così via).

  • Matching Products (Corrispondenza di prodotti): abbinamento dei prodotti nel catalogo rispetto ad altre origini, ad esempio catalogo di prodotti rispetto al catalogo di un concorrente, in cui le voci sono strutturate in modo diverso.

  • Improving Fraud Detection (Miglioramento del rilevamento delle frodi): identificazione di account dei clienti duplicati, determinazione di quando un nuovo account creato è (o potrebbe essere) una corrispondenza per un utente fraudolento noto.

  • Other Matching Problems (Altri problemi di corrispondenza): abbinare indirizzi, film, elenchi di parti e così via. In generale, se un essere umano può esaminare le righe del database e determinare che corrispondono, c'è una buona possibilità che la trasformazione FindMatches possa essere utile.

È possibile creare queste trasformazioni al momento della creazione di un processo. La trasformazione creata si basa su uno schema del datastore di origine e su dati di esempio del set di dati di origine etichettato (questo processo viene denominato "insegnamento" di una trasformazione). I record etichettati devono essere presenti nel set di dati di origine. In questo processo viene generato un file etichettato e quindi ricaricato nel modo appreso dalla trasformazione. Dopo aver istruito la trasformazione, è possibile chiamarla dal processo AWS Glue basato su Spark (PySpark o Scala Spark) e utilizzarla in altri script con un datastore di origine compatibile.

Dopo la creazione della trasformazione, questa viene memorizzata all'interno di AWS Glue. Nella console di AWS Glue è possibile gestire le trasformazioni create. Nel riquadro di navigazione in Integrazione dei dati ed ETL, Strumenti di classificazione dei dati > Corrispondenza dei record, puoi modificare e continuare a istruire la trasformazione del machine learning. Per ulteriori informazioni sulla gestione delle trasformazioni nella console, consultare Lavorare con le trasformazioni dell'apprendimento automatico.

Nota

AWS Glue FindMatches versione 2.0 utilizza il bucket Amazon S3 aws-glue-temp-<accountID>-<region> per archiviare i file temporanei mentre la trasformazione elabora i dati. Puoi eliminare questi dati dopo aver completato l'esecuzione, manualmente o impostando una regola del ciclo di vita di Amazon S3.

Tipi di trasformazioni basate su machine learning

È possibile creare trasformazioni di machine learning per pulire i dati. Puoi chiamare queste trasformazioni dallo script ETL. I tuoi dati vengono trasformati in una struttura dati chiamata DynamicFrame, che è un'estensione di un DataFrame SQL Apache Spark. DynamicFrame contiene i tuoi dati e il suo schema di riferimento per elaborare i dati.

Sono disponibili i seguenti tipi di trasformazioni basate su machine learning:

Rilevamento delle corrispondenze

Individua i record duplicati nei dati di origine. È possibile addestrare questa trasformazione basata su machine learning etichettando dei set di dati di esempio e indicando tra quali righe sono presenti delle corrispondenze. La trasformazione basata su machine learning apprende quali righe debbano essere abbinate man mano che vengono offerti dati di esempio etichettati. A seconda della configurazione della trasformazione, l'output è uno dei seguenti:

  • Una copia della tabella di input con una colonna match_id aggiuntiva compilata con i valori che indicano insiemi di record corrispondenti. La colonna match_id è un identificatore arbitrario. Tutti i record con lo stesso match_id sono stati identificati come tra loro corrispondenti. I record con match_id diversi non corrispondono.

  • Una copia della tabella di input con le righe duplicate rimosse. Se vengono rilevati molteplici duplicati, viene mantenuto il record con la chiave primaria minore.

Trova corrispondenze incrementali

La trasformazione Find matches può anche essere configurata per trovare le corrispondenze tra i frame esistenti e incrementali e restituire come output una colonna contenente un ID univoco per gruppo di corrispondenza.

Per ulteriori informazioni, consulta la pagina: Trovare corrispondenze incrementali

Utilizzo della trasformazione FindMatches

È possibile utilizzare la trasformazione FindMatches per individuare i record duplicati nei dati di origine. Viene generato o fornito un file di etichettatura che possa aiutare nell'addestramento della trasformazione.

Nota

Attualmente, le trasformazioni FindMatches che usano una chiave di crittografia personalizzata non sono supportate nelle seguenti Regioni:

  • Asia Pacifico (Osaka): ap-northeast-3

Per iniziare a utilizzare la trasformazione FindMatches, è possibile completare la procedura seguente. Per un esempio più avanzato e dettagliato, consulta l'articolo del Blog sui big data di AWS: Harmonize data using AWS Glue and AWS Lake Formation FindMatches ML to build a customer 360 view.

Nozioni di base sull'utilizzo della trasformazione con rilevamento delle corrispondenze

Seguire questi passaggi per iniziare a usare la trasformazione FindMatches:

  1. Creare una tabella in AWS Glue Data Catalog per ospitare i dati di origine da ripulire. Per informazioni su come creare un crawler, consultare Uso di crawler nella console AWS Glue.

    Se i dati di origine sono contenuti in un file di testo, ad esempio un file di valori separati da virgola (CSV), tenere conto delle seguenti considerazioni:

    • Mantenere il file CSV contenente i record di input e i file di etichettatura in cartelle separate. In caso contrario, il crawler di AWS Glue potrebbe considerarli come più componenti della stessa tabella e creare tabelle nel catalogo dati in modo non corretto.

    • A meno che il file CSV includa solo caratteri ASCII, assicurarsi che per la codifica dei file CSV venga utilizzato UTF-8 senza BOM (Byte Order Mark). Microsoft Excel spesso aggiunge un BOM all'inizio dei file CSV UTF-8. Per rimuoverlo, aprire il file CSV con un editor di testo e salvare nuovamente il file in formato UTF-8 senza BOM.

  2. Nella console di AWS Glue, creare un processo e scegliere il tipo di trasformazione Find matches (Rilevamento delle corrispondenze)

    Importante

    La tabella dell'origine dati selezionata per il processo può contenere fino a un massimo di 100 colonne.

  3. Indica a AWS Glue di generare un file di etichettatura scegliendo Generate labeling file (Genera file di etichettatura). AWS Glue utilizza il primo passaggio per raggruppare record simili per ciascun labeling_set_id in modo da poter rivedere tali raggruppamenti. Etichetta corrispondenze nella colonna label.

    • Se già disponi di un file di etichettatura, ossia di un esempio di record che indicano righe corrispondenti, carica il file su Amazon Simple Storage Service (Amazon S3). Per informazioni sul formato del file di etichettatura, consultare Formato del file di etichettatura. Continuare con la fase 4.

  4. Scaricare il file di etichettatura ed etichettare il file come descritto nella sezione Etichettatura.

  5. Caricare il file di etichettatura corretto. AWS Glue esegue delle attività per addestrare la trasformazione al riconoscimento delle corrispondenze.

    Nella pagina di elenco delle Machine learning transforms (Trasformazioni basate su machine learning), scegliere la scheda History (Cronologia). Questa pagina indica quando AWS Glue esegue le seguenti attività:

    • Import labels (Importa le etichette)

    • Export labels (Esporta le etichette)

    • Generate labels (Genera le etichette)

    • Estimate quality (Valuta la qualità)

  6. Per creare una migliore trasformazione, è possibile scaricare, etichettare e caricare il file etichettato in modo iterativo. Nell'esecuzione iniziale, molti record potrebbero essere rilevati come non corrispondenti. Ma man mano che prosegue l'addestramento tramite la verifica del file di etichettatura, AWS Glue avanza nell'apprendimento.

  7. Valutare e ottimizzare la trasformazione tramite la valutazione delle prestazioni e dei risultati della ricerca delle corrispondenze. Per ulteriori informazioni, consulta Ottimizzazione delle trasformazioni basate su machine learning in AWS Glue.

Etichettatura

Quando FindMatches genera un file di etichettatura, i record vengono selezionati dalla tabella di origine. Sulla base del training precedente, FindMatches identifica i record più importanti da cui apprendere.

L'atto di etichettatura consiste nella modifica di un file di etichettatura (ad esempio, un foglio di calcolo come Microsoft Excel) e l'aggiunta di identificatori, o etichette, nella colonna label che identifica i record con o senza corrispondenze. È importante avere una chiara e coerente definizione di corrispondenza nei dati di origine. FindMatches apprende sulla base dei record designati come corrispondenti (o meno) e utilizza le decisioni dell'utente per ricavare le informazioni necessarie all'individuazione dei record duplicati.

Quando il file di etichettatura viene generato da FindMatches, vengono generati circa 100 record. Questi 100 record sono in genere suddivisi in 10 set di etichettatura, dove ogni set di etichettatura è identificato da un unico labeling_set_id generato da FindMatches. Ogni set di etichettatura deve essere considerato come un'attività di etichettatura separata indipendente dagli altri set di etichettatura. Il tuo compito consiste nell'identificare i record corrispondenti e non corrispondenti all'interno di ciascun set di etichette.

Suggerimenti per la modifica dei file di etichettatura in un foglio di calcolo.

Quando si modifica il file di etichettatura in un foglio di calcolo, considerare i seguenti aspetti:

  • Il file potrebbe non aprirsi con le colonne dei campi completamente espanse. Per visualizzare i contenuti di tali celle, potrebbe essere necessario espandere le colonne labeling_set_id e label.

  • Se la colonna chiave primaria è un numero, ad esempio un tipo di dato long, il foglio di calcolo potrebbe interpretarlo come un numero e modificarne il valore. Questo valore chiave deve essere trattato come un testo. Per risolvere il problema, formattare tutte le celle nella colonna chiave primaria come Text data (Formato testo).

Formato del file di etichettatura

Il file di etichettatura generato da AWS Glue per insegnare la trasformazione FindMatches utilizza il seguente formato. Se si genera il proprio file per AWS Glue, anch'esso deve seguire questo formato:

  • Si tratta di un file di valori separati da virgola (CSV).

  • Deve essere codificato in UTF-8. Se il file è stato modificato con Microsoft Windows, potrebbe essere codificato con cp1252.

  • Affinché possa essere passato a AWS Glue è necessario che si trovi su Amazon S3.

  • Utilizza un numero modesto di righe per ogni attività di etichettatura. Sono consigliate 10-20 righe per attività, anche se 2-30 righe per attività sono accettabili. Le attività superiori a 50 righe non sono consigliate e potrebbero causare risultati scadenti o errori di sistema.

  • Se si dispone di dati già etichettati costituiti da coppie di record etichettati come "corrispondenza" o "nessuna corrispondenza", questo va bene. Queste coppie etichettate possono essere rappresentate come set di etichettatura di dimensione 2. In questo caso etichettare entrambi i record con, ad esempio, una lettera "A" se corrispondono, ma etichettare uno come "A" e uno come "B" se non corrispondono.

    Nota

    Poiché possiede delle colonne aggiuntive, il file di etichettatura presenta uno schema diverso da quello di un file che contiene i dati di origine. Posizionare il file di etichettatura in una cartella diversa da quella di qualsiasi altro file CSV di input della trasformazione in modo che il crawler di AWS Glue non lo prenda in considerazione al momento della creazione delle tabelle nel catalogo dati. In caso contrario, le tabelle create dal crawler di AWS Glue potrebbero non rappresentare correttamente i dati.

  • Le prime due colonne (labeling_set_id, label) sono richieste obbligatoriamente da AWS Glue. Le colonne rimanenti devono corrispondere allo schema dei dati che devono essere elaborati.

  • Per ogni labeling_set_id, è necessario identificare tutti i record corrispondenti utilizzando la stessa etichetta. Un'etichetta è una stringa univoca posizionata nella colonna label. Consigliamo di usare etichette contenenti caratteri semplici, ad esempio A, B, C e così via. Le etichette considerano in modo differente le maiuscole dalle minuscole e vengono inserite nella colonna label.

  • Le righe che contengono lo stesso labeling_set_id e la stessa etichetta si intendono etichettate come corrispondenza.

  • Le righe che contengono lo stesso labeling_set_id e un'etichetta diversa si intendono etichettate come non una corrispondenza

  • Le righe che contengono un labeling_set_id diverso non trasmettono alcuna informazione a favore o contro la corrispondenza.

    Di seguito è riportato un esempio di etichettatura dei dati:

    labeling_set_id etichetta first_name last_name Compleanno
    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 Sara Jones 12/11/1992
    DEF345 C Richie Jones Junior. 05/06/2017
    DEF345 B Sara Jones-Walker 12/11/1992
    GHI678 A Roberto Miller 1/3/1999
    GHI678 A Bob Miller 1/3/1999
    XYZABC A Guglielmo Robinson 2/5/2001
    XYZABC B Andrea Robinson 2/5/1971
  • Nell'esempio precedente identifichiamo John/Johnny/Jon Doe come una corrispondenza e insegniamo al sistema che questi record non corrispondono a Jane Smith. Separatamente, insegniamo al sistema che Richard e Rich Jones sono la stessa persona, ma che questi dischi non corrispondono a Sarah Jones/Jones-Walker e Richie Jones Jr.

  • Come si può vedere, l'ambito delle etichette è limitato al labeling_set_id. Quindi le etichette non attraversano i limiti imposti dal labeling_set_id. Ad esempio, un'etichetta "A" nel labeling_set_id 1 non ha alcuna relazione con l'etichetta "A" nel labeling_set_id 2.

  • Se un record non ha alcuna corrispondenza all'interno di un set di etichette, assegnargli un'etichetta univoca. Ad esempio, Jane Smith non corrisponde ad alcun record nel set di etichettatura ABC123, quindi è l'unico record in quel set di etichettatura con l'etichetta di B.

  • Il set di etichettatura "GHI678" mostra che un set di etichettatura può essere costituito da solo due record che hanno la stessa etichetta per mostrare che corrispondono. Allo stesso modo, "XYZABC" mostra due record con etichette diverse per mostrare che non corrispondono.

  • Si noti che a volte un set di etichette non può contenere corrispondenze (ovvero, si attribuisce a ogni record nel set di etichette un'etichetta diversa) o un set di etichette potrebbe essere "uguale" (ad essi è stata assegnata la stessa etichetta). Questo va bene fintanto che i set di etichettatura contengono collettivamente esempi di record "uguali" o "non uguali" secondo i propri criteri.

Importante

Confermare che il ruolo IAM passato a AWS Glue abbia accesso al bucket Amazon S3 che contiene il file di etichettatura. Per convenzione, le policy di AWS Glue concedono le autorizzazioni sui bucket o sulle cartelle di Amazon S3 i cui nomi contengono il prefisso aws-glue-. Se i file di etichettatura si trovano in percorsi diversi, aggiungere al ruolo IAM l'autorizzazione di accesso a tale posizione.