Ingesta de datos, desplazamiento en el tiempo y reversión de tablas
Este tutorial le guiará a través del proceso de ingesta de datos en watsonx.data, la realización de viajes en el tiempo y las operaciones de retroceso de tablas.
- Ingesta de datos
-
La ingestión de datos es el proceso de importación y carga de datos en watsonx.data. Puede realizar la ingesta de datos en watsonx.data en los siguientes métodos:
- Ingesting data using Create table from file option in the Data manager page.
- Ingesta de datos mediante consultas SQL.
- Ingesta de datos mediante la herramienta de línea de comandos "
IBM-lh". - Ingesta de datos mediante el motor Spark.
Para más información, consulte Ingesta de datos.
- Viaje en el tiempo
-
La posibilidad de viajar en el tiempo en las tablas de Apache Iceberg permite recuperar e inspeccionar el historial de la tabla. Utiliza instantáneas de tablas para apoyar las funciones de viaje en el tiempo. Una instantánea de tabla representa el estado de una tabla en un momento determinado. Iceberg genera el registro de instantánea de tabla cuando se crea o modifica la tabla (insertar, actualizar, eliminar). Puede utilizar este registro instantáneo para consultar los detalles de la tabla.
Las tablas Hive no admiten la función de viaje en el tiempo.
- Retrotracción
- La función de retroceso de tablas permite retroceder una tabla a un punto anterior en el tiempo mediante el uso de instantáneas de tablas.
Caso práctico
Imagina que eres ingeniero de datos en tu empresa y que tienes la tarea de gestionar los registros de coches en la base de datos de la empresa. Cargue los registros de datos existentes en el almacén. Añade un nuevo conjunto de datos a la tabla existente. Tras la revisión, ve que el nuevo conjunto de datos añadido no es apropiado y decide revertir la tabla a un estado anterior.
El siguiente vídeo proporciona un método visual para aprender los conceptos y tareas de esta documentación.
Objetivo
- Cree una tabla y cargue los datos de muestra mediante el motor Spark en una tabla.
- Cargar más registros en la tabla '
cars'. - Recuperar registros de tablas mediante instantáneas de tablas.
- Realizar operaciones de rollback de tablas.
Antes de empezar
- Descargue el archivo
cars.csv" dehttps://ibm.box.com/v/data-cars-csv. - Debe tener aprovisionada una instancia del plan Lite.
- La instancia del plan Lite debe incluir motores Spark y Presto en estado de ejecución.
- Asociar un catálogo a los motores Presto y Spark. Aquí, Apache Iceberg catálogo.
Procedimiento
Creación de tablas y carga de datos
Esta sección le guiará a través del procedimiento para crear una tabla llamada " cars " e ingerir los datos presentes en el archivo " cars.csv " utilizando el motor Spark.
-
Inicie una sesión en la consola de watsonx.data.
-
En el menú de navegación, seleccione Gestor de datos.
-
Haga clic en Ingest Data y seleccione Local System. Para obtener más información sobre cómo ingerir datos, consulte Ingesta de datos desde el sistema local.
-
Haga clic en la pestaña Examinar datos. Actualice el catálogo Iceberg para ver el nuevo esquema y la tabla con datos. Puede ver las pestañas Columnas de tabla, Recorrido temporal, Muestra de datos y DDL.
-
Haga clic en Viajar en el tiempo. Puede ver que la tabla tiene registros '
406.
Cargar más registros en la tabla
Realice varias transacciones (dos transacciones) para actualizar la tabla ' cars '. En la primera transacción, ingiere otros dos registros de coches para el modelo " TESLA y en la segunda transacción, ingiere un
registro para el modelo Kia Optima.
Para ello:
-
Vaya al espacio de trabajo Consulta.
-
Seleccione el motor Presto.
-
Utilice la siguiente consulta SQL para insertar el primer conjunto de datos en la tabla '
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'); -
Ejecute la consulta. Los datos se suman y el registro total es '
408. -
Utilice la siguiente consulta SQL para insertar el segundo conjunto de datos en la tabla "
cars".INSERT INTO iceberg_data.automobiles.cars VALUES ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea'); -
Ejecute la consulta. Los datos se suman y el registro total pasa a ser '
409. -
Vaya al Gestor de datos.
-
Seleccione la tabla
cars. En la sección Coches, seleccione la pestaña Viaje en el tiempo. Puede ver los registros de instantáneas (con SnapshotID) correspondientes a las transacciones de datos.
Recuperación de registros de tablas mediante el uso de instantáneas de tablas.
Esta sección del tutorial le guía a través del procedimiento para recuperar registros de tablas utilizando instantáneas de tablas. Se ejecutan consultas para recuperar datos con fines de auditoría y normativos.
-
Vaya al espacio de trabajo Consulta.
-
Ejecute la siguiente consulta para recuperar los registros instantáneos correspondientes a las tres transacciones de inserción realizadas.
SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;El conjunto de resultados incluye tres registros de instantáneas con snapshot_id, fecha, hora y zona horaria. En este tutorial, el SnapshotID, fecha y la hora de cada transacción se denominan:
<Tran1Time>, '<Tran1SnapshotID>, '<Tran2Time>, '<Tran2SnapshotID>, '<Tran3Time>, y '<Tran3SnapshotID>.También puede ver los registros de instantáneas desde Gestor de datos > tabla '
cars> pestaña Recorrido temporal. -
Proporcione el ID o la hora de la instantánea en las siguientes consultas y ejecute las consultas para recuperar la información de la tabla en ese punto.
| Escenario | Consulta | Resultado |
|---|---|---|
| Recuperar datos del estado inicial mediante el ID de instantánea. | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; |
La sección de resultados muestra 406 registros. |
| Recupera los datos del estado inicial utilizando la marca de tiempo. | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
La sección de resultados muestra 406 registros. |
| Recuperar los datos posteriores a la segunda transacción utilizando el ID de la instantánea. | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; |
La sección de resultados muestra 408 registros. |
| Recuperar los datos posteriores a la tercera transacción utilizando la marca de tiempo. | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
La sección de resultados muestra 409 registros. |
| Recuperar los datos de un punto en el tiempo entre la segunda y la tercera transacción. | 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 sección de resultados muestra 408 registros. |
| Recuperar datos de un momento anterior a la creación de la tabla (se espera que falle). | 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; |
No se han encontrado registros. |
Realización del rollback de la tabla
watsonx.data permite revertir una tabla a un punto anterior en el tiempo mediante el uso de instantáneas.
Para revertir los datos de la tabla a una instantánea anterior, haga lo siguiente:
-
Vaya al Gestor de datos.
-
Seleccione la tabla
cars. En la sección Coches, seleccione la pestaña Viaje en el tiempo. Puede ver los registros de instantáneas (con SnapshotID). -
Haga clic en el menú de desbordamiento al final de la fila de la segunda instantánea (la segunda instantánea incluye 408 registros) y haga clic en Retroceder a instantánea. Se abre la ventana Confirmar reversión a instantánea. Haga clic en Retroceder a la instantánea. La reversión de datos se ha realizado correctamente. Ahora, la tabla debe tener 408 registros.
-
Para verificar la reversión, ejecute la siguiente consulta para comprobar si se eliminan las filas correspondientes a la tercera transacción.
- Ejemplo de consulta para comprobar que la tabla no incluye el registro "Kia Optima".
SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');El resultado sólo muestra los registros de datos correspondientes a "Tesla Model S" y "Tesla Model 3". La tabla no tiene el registro correspondiente a "Kia Optima" (tercera transacción), ya que la tabla se ha revertido a la segunda instantánea.
- Ejemplo de consulta para contar el número total de filas de la tabla.
SELECT COUNT(*) FROM iceberg_data.automobiles.cars;Debe ver un recuento de 408 filas, que coincide con el recuento cuando realizó la segunda transacción en la tabla. La tabla vuelve a su estado anterior (segunda transacción).