Acquisition de données, déplacement dans le temps et retour en arrière de la table

Ce tutoriel vous guide dans le processus d'ingestion des données dans watsonx.data, dans l'exécution des opérations de voyage dans le temps et de retour en arrière des tables.

L'ingestion de données

L'ingestion de données est le processus d'importation et de chargement de données dans watsonx.data Vous pouvez effectuer l'ingestion de données dans watsonx.data selon les méthodes suivantes :

  • Ingérer des données en utilisant l'option Créer une table à partir d'un fichier dans la page Gestionnaire de données.
  • Acquisition de données à l'aide de requêtes SQL.
  • Ingestion des données à l'aide de l'outil de ligne de commande " IBM-lh
  • Ingestion de données à l'aide du moteur Spark.

Pour plus d'informations, voir l'ingestion de données.

Déplacement dans le temps

La possibilité de voyager dans le temps dans les tables Apache Iceberg vous permet d'extraire et d'inspecter l'historique de la table. Il utilise des instantanés de table pour prendre en charge les fonctions de voyage dans le temps. Un instantané de table représente l'état d'une table à un moment donné. Iceberg génère l'enregistrement de l'instantané de la table lorsque la table est créée ou modifiée (insertion, mise à jour, suppression). Vous pouvez utiliser cet enregistrement instantané pour interroger les détails de la table.

Les tables de Hive ne prennent pas en charge la fonction de voyage dans le temps.

Rollback
La fonction de retour en arrière d'une table vous permet de revenir à un point antérieur dans le temps en utilisant des instantanés de table.

Scénario d'utilisation

Imaginez que vous êtes ingénieur en données pour votre entreprise et que vous êtes chargé de gérer les enregistrements de voitures dans la base de données de l'entreprise. Télécharger les enregistrements de données existants dans la mémoire. Ajouter un nouvel ensemble de données au tableau existant. Après examen, vous constatez que le nouvel ensemble de données ajouté n'est pas approprié et vous décidez de ramener le tableau à un état antérieur.

La vidéo suivante fournit une méthode visuelle pour apprendre les concepts et les tâches de cette documentation.

Objectif

  • Créez un tableau et chargez les données de l'échantillon à l'aide du moteur Spark dans un tableau.
  • Chargez d'autres enregistrements dans le tableau " cars.
  • Récupérer des enregistrements de table en utilisant des instantanés de table.
  • Effectuer des opérations de retour en arrière sur les tables.

Avant de commencer

  • Téléchargez le fichier cars.csv à partir dehttps://ibm.box.com/v/data-cars-csv
  • Vous devez avoir une instance de plan Lite provisionnée.
  • L'instance du plan Lite doit inclure les moteurs Spark et Presto en état de marche.
  • Associer un catalogue aux moteurs Presto et Spark. Ici, Apache Iceberg catalogue.

Procédure

Création d'un tableau et chargement des données

Cette section vous guide dans la procédure de création d'une table nommée 'cars et d'ingestion des données présentes dans le fichier 'cars.csv à l'aide du moteur Spark.

  1. Connectez-vous à la console watsonx.data.

  2. Dans le menu de navigation, sélectionnez Gestionnaire de données.

  3. Cliquez sur Ingest Data et sélectionnez Local System. Pour plus d'informations sur la manière d'ingérer des données, voir Ingérer des données à partir d'un système local.

  4. Cliquez sur l'onglet Parcourir les données. Actualisez le catalogue Iceberg pour afficher le nouveau schéma et la nouvelle table avec les données. Vous pouvez consulter les onglets Colonnes de la table, Voyage dans le temps, Échantillon de données et DDL.

  5. Cliquez sur Voyage dans le temps. Vous pouvez constater que la table contient des enregistrements " 406.

Chargement d'enregistrements supplémentaires dans la table

Effectuez des transactions multiples (deux transactions) pour mettre à jour la table " cars. Lors de la première transaction, deux autres dossiers de voitures sont enregistrés pour le modèle " TESLA et lors de la deuxième transaction, un dossier est enregistré pour le modèle Kia Optima.

Pour ce faire :

  1. Accédez à l'espace de travail Query.

  2. Sélectionnez le moteur Presto.

  3. Utilisez la requête SQL suivante pour insérer le premier ensemble de données dans la table " 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. Exécutez la requête. Les données sont ajoutées et l'enregistrement total est " 408.

  5. Utilisez la requête SQL suivante pour insérer le deuxième ensemble de données dans la table " cars

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea');
    
  6. Exécutez la requête. Les données sont ajoutées et l'enregistrement total devient " 409.

  7. Allez dans le gestionnaire de données.

  8. Sélectionnez le tableau cars. Dans la section " Voitures ", sélectionnez l'onglet " Voyages dans le temps". Vous pouvez visualiser les enregistrements d'instantanés (avec SnapshotID) correspondant aux transactions de données.

Récupération d'enregistrements de table à l'aide d'instantanés de table.

Cette section du didacticiel vous guide dans la procédure de récupération des enregistrements de table à l'aide d'instantanés de table. Vous exécutez des requêtes pour extraire des données à des fins d'audit et de réglementation.

  1. Accédez à l'espace de travail Query.

  2. Exécutez la requête suivante pour récupérer les enregistrements instantanés correspondant aux trois transactions d'insertion effectuées.

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

    L'ensemble des résultats comprend trois enregistrements d'instantanés avec l'identifiant de l'instantané, la date, l'heure et le fuseau horaire. Dans ce tutoriel, l'SnapshotID, date et l'heure de chaque transaction sont appelés : <Tran1Time>, '<Tran1SnapshotID>, '<Tran2Time>, '<Tran2SnapshotID>, '<Tran3Time> et '<Tran3SnapshotID>.

    Vous pouvez également consulter les enregistrements instantanés dans le Gestionnaire de données > tableau 'cars > Onglet " Voyage dans le temps".

  3. Indiquez l'ID ou l'heure de l'instantané dans les requêtes suivantes et exécutez les requêtes pour récupérer les informations de la table à ce moment-là.

Exemples de scénarios
Scénario Requête Résultat
Récupérer les données de l'état initial en utilisant l'ID de l'instantané. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; La section des résultats affiche 406 enregistrements.
Récupérer les données de l'état initial en utilisant l'horodatage. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; La section des résultats affiche 406 enregistrements.
Récupérer les données après la deuxième transaction en utilisant l'ID de l'instantané. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; La section des résultats affiche 408 enregistrements.
Récupérer les données après la troisième transaction en utilisant l'horodatage. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; La section des résultats affiche 409 enregistrements.
Récupérer les données à un moment donné entre la deuxième et la troisième transaction. 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 section des résultats affiche 408 enregistrements.
Récupérer des données antérieures à la création de la table (échec prévisible). 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; Aucun dossier n'a été trouvé.

Exécution d'un rollback de table

watsonx.data permet de revenir sur une table à un point antérieur dans le temps en utilisant des instantanés.

Pour rétablir les données de la table sur un cliché antérieur, procédez comme suit :

  1. Allez dans le gestionnaire de données.

  2. Sélectionnez le tableau cars. Dans la section " Voitures ", sélectionnez l'onglet " Voyages dans le temps". Vous pouvez consulter les enregistrements de l'instantané (avec l'SnapshotID).

  3. Cliquez sur le menu déroulant au bout de la ligne du deuxième instantané (le deuxième instantané comprend 408 enregistrements) et cliquez sur Revenir à l'instantané. La fenêtre Confirmer le retour à l'instantané s'ouvre. Cliquez sur Rétablir l'instantané. Le retour en arrière des données est réussi. La table doit maintenant comporter 408 enregistrements.

  4. Pour vérifier le retour en arrière, exécutez la requête suivante pour vérifier si les lignes correspondant à la troisième transaction ont été supprimées.

    • Exemple de requête pour vérifier que la table ne contient pas l'enregistrement "Kia Optima".
    SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');
    

    Le résultat répertorie les enregistrements de données correspondant à "Tesla Model S" et "Tesla Model 3" uniquement. La table ne contient pas l'enregistrement correspondant à "Kia Optima" (troisième transaction), car la table a été ramenée au deuxième instantané.

    • Exemple de requête pour compter le nombre total de lignes dans le tableau.
    SELECT COUNT(*) FROM iceberg_data.automobiles.cars;
    

    Vous devez voir un décompte de 408 lignes, ce qui correspond au décompte lorsque vous avez effectué la deuxième transaction dans la table. Le tableau est revenu à son état précédent (deuxième transaction).