Ingestione dei dati, spostamento temporale e rollback delle tabelle

Questa esercitazione guida l'utente attraverso il processo di inserimento dei dati in watsonx.data, l'esecuzione di viaggi nel tempo e le operazioni di rollback delle tabelle.

Acquisizione dei dati

L'ingestione dei dati è il processo di importazione e caricamento dei dati in watsonx.data. È possibile eseguire l'ingestione dei dati in watsonx.data con i seguenti metodi:

  • Ingerire i dati utilizzando l'opzione Crea tabella da file nella pagina Gestione dati.
  • Ingestione dei dati mediante query SQL.
  • Ingerire i dati utilizzando lo strumento a riga di comando " IBM-lh.
  • Ingerire i dati utilizzando il motore Spark.

Per ulteriori informazioni, vedere Ingestione dei dati.

Viaggio nel tempo

La possibilità di viaggiare nel tempo nelle tabelle di Apache Iceberg consente di recuperare e ispezionare la cronologia della tabella. Utilizza le istantanee della tabella per supportare le funzioni di viaggio nel tempo. Un'istantanea della tabella rappresenta lo stato di una tabella in un determinato momento. Iceberg genera il record dell'istantanea della tabella quando questa viene creata o modificata (inserimento, aggiornamento, cancellazione). È possibile utilizzare questo record di istantanea per eseguire una query e vedere i dettagli della tabella.

Le tabelle Hive non supportano la funzione di viaggio nel tempo.

Rollback
La funzione di rollback della tabella consente di riportare una tabella a un punto precedente nel tempo utilizzando le istantanee della tabella.

Scenario del caso d'uso

Considerate di essere un Data Engineer della vostra azienda e di avere il compito di gestire i record di auto nel database aziendale. Caricare i record di dati esistenti nell'archivio. Aggiungere una nuova serie di dati alla tabella esistente. Dopo la revisione, si nota che il nuovo set di dati aggiunto non è appropriato e si decide di ripristinare la tabella a uno stato precedente.

Il video seguente fornisce un metodo visivo per apprendere i concetti e le attività di questa documentazione.

Obiettivo

  • Creare una tabella e caricare i dati di esempio utilizzando il motore Spark in una tabella.
  • Caricare altri record nella tabella 'cars.
  • Recuperare i record della tabella utilizzando le istantanee della tabella.
  • Eseguire le operazioni di rollback della tabella.

Prima di iniziare

  • Scaricate il file cars.csv dahttps://ibm.box.com/v/data-cars-csv.
  • È necessario disporre di un'istanza del piano Lite.
  • L'istanza del piano Lite deve includere i motori Spark e Presto in stato di funzionamento.
  • Associare un catalogo ai motori Presto e Spark. Qui, catalogo Apache Iceberg.

Procedura

Creazione della tabella e caricamento dei dati

Questa sezione vi guida attraverso la procedura per creare una tabella denominata 'cars e ingerire i dati presenti nel file 'cars.csv utilizzando il motore Spark.

  1. Accedere alla console watsonx.data.

  2. Dal menu di navigazione, selezionare Gestione dati.

  3. Fare clic su Ingest Data e selezionare Local System. Per ulteriori informazioni su come ingerire i dati, vedere Ingestione di dati dal sistema locale.

  4. Fare clic sulla scheda Sfoglia dati. Aggiornare il catalogo Iceberg per visualizzare il nuovo schema e la tabella con i dati. È possibile visualizzare le schede Colonne tabella, Corsa temporale, Campione dati e DDL.

  5. Fare clic su Viaggio nel tempo. È possibile vedere che la tabella contiene i record di '406.

Caricamento di altri record nella tabella

Eseguire più transazioni (due transazioni) per aggiornare la tabella 'cars. Nella prima transazione, ingerire altri due record di auto per il modello 'TESLA e nella seconda transazione, ingerire un record per il modello Kia Optima.

Per farlo:

  1. Andare all'area di lavoro Query.

  2. Selezionare il motore Presto.

  3. Utilizzare la seguente query SQL per inserire la prima serie di dati nella tabella 'cars.

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Tesla Model S', 102, 0, 0, 670, 4766, 3.1, 2023, 'USA'),
    ('Tesla Model 3', 134, 0, 0, 283, 3582, 5.8, 2023, 'USA');
    
  4. Eseguire la query. I dati vengono aggiunti e il record totale è '408.

  5. Utilizzare la seguente query SQL per inserire la seconda serie di dati nella tabella 'cars.

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea');
    
  6. Eseguire la query. I dati vengono aggiunti e il record totale diventa '409.

  7. Andare in Gestione dati.

  8. Selezionare la tabella cars. Nella sezione auto, selezionare la scheda Viaggio nel tempo. È possibile visualizzare i record delle istantanee (con SnapshotID) corrispondenti alle transazioni di dati.

Recupero dei record della tabella utilizzando le istantanee della tabella.

Questa sezione dell'esercitazione guida l'utente nella procedura di recupero dei record della tabella utilizzando le istantanee della tabella. Si eseguono query per recuperare i dati a fini di audit e normativi.

  1. Andare all'area di lavoro Query.

  2. Eseguire la seguente query per recuperare i record snapshot corrispondenti alle tre transazioni di inserimento eseguite.

    SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;
    

    Il set di risultati include tre record di snapshot con snapshot_id, data, ora e fuso orario. In questa esercitazione, lo SnapshotID, data e l'ora di ogni transazione sono indicati come: <Tran1Time>, '<Tran1SnapshotID>, '<Tran2Time>, '<Tran2SnapshotID>, '<Tran3Time> e '<Tran3SnapshotID>.

    È possibile visualizzare i record delle istantanee anche da Gestione dati > tabella 'cars > scheda Viaggio nel tempo.

  3. Nelle query seguenti, fornire l'ID o l'ora dello snapshot ed eseguire le query per recuperare le informazioni sulla tabella in quel momento.

Scenari di esempio
Scenario Query Risultato
Recuperare i dati dallo stato iniziale utilizzando l'ID dell'istantanea. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; La sezione dei risultati visualizza 406 record.
Recuperare i dati dallo stato iniziale utilizzando il timestamp. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; La sezione dei risultati visualizza 406 record.
Recuperare i dati dopo la seconda transazione utilizzando l'ID dello snapshot. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; La sezione dei risultati visualizza 408 record.
Recuperare i dati dopo la terza transazione utilizzando il timestamp. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; La sezione dei risultati visualizza 409 record.
Recuperare i dati da un punto nel tempo tra la seconda e la terza transazione. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('Choose-a-time-between-<Tran2Time>-and-<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; La sezione dei risultati visualizza 408 record.
Recupera i dati da un momento precedente alla creazione della tabella (si prevede un fallimento). SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('2024-01-01 00:00:00.000 UTC' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; Non sono stati trovati documenti.

Esecuzione del rollback della tabella

watsonx.data consente di eseguire il rollback di una tabella a un punto precedente nel tempo utilizzando le istantanee.

Per eseguire il rollback dei dati della tabella a un'istantanea precedente, procedere come segue:

  1. Andare in Gestione dati.

  2. Selezionare la tabella cars. Nella sezione auto, selezionare la scheda Viaggio nel tempo. È possibile visualizzare i record delle istantanee (con SnapshotID).

  3. Fare clic sul menu di overflow alla fine della riga per la seconda istantanea (la seconda istantanea include 408 record) e fare clic su Rollback all'istantanea. Si apre la finestra Conferma rollback all'istantanea. Fare clic su Rollback all'istantanea. Il rollback dei dati è riuscito. Ora, la tabella deve avere 408 record.

  4. Per verificare il rollback, eseguire la seguente query per controllare se le righe corrispondenti alla terza transazione sono state rimosse.

    • Query di esempio per verificare che la tabella non includa il record "Kia Optima".
    SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');
    

    Il risultato elenca i record di dati corrispondenti solo a "Tesla Model S" e "Tesla Model 3". La tabella non ha il record corrispondente a "Kia Optima" (terza transazione) poiché la tabella è ora in rollback alla seconda istantanea.

    • Query di esempio per contare il numero totale di righe nella tabella.
    SELECT COUNT(*) FROM iceberg_data.automobiles.cars;
    

    Si deve vedere un conteggio di 408 righe, che corrisponde al conteggio effettuato durante la seconda transazione nella tabella. La tabella torna allo stato precedente (seconda transazione).