Saltar al contenido
Categoría: Análisis de Datos
2024-01-31

Explorando Time Travel en Azure Databricks

Bienvenidos/as a un nuevo artículo en el mejor blog de Data & Cloud. En el post de hoy os contamos cómo utilizar de modo básico el historial de versiones y la funcionalidad de «Time Travel», a través de un ejemplo práctico. Nuestro escenario se centra en una tabla de usuarios en Delta Lake, donde realizaremos operaciones merge como upserts y exploraremos cómo revertir la tabla a una versión anterior.

Delta Lake en Databricks destaca por su flexibilidad y control de los datos, ofreciéndonos características como el control de versiones y el historial de transacciones, esenciales en entornos empresariales donde la integridad y trazabilidad de los datos, son una prioridad.

La capacidad de «Time Travel» en tablas Delta permiten acceder y restaurar versiones anteriores de datos, y resultan cruciales en la recuperación de datos, auditorías y análisis históricos.

A continuación, los pasos y el código necesario, vamos allá.

Paso 1: Configuración de Azure Databricks

El primer paso, suponiendo que ya tengas una cuenta en Azure Databricks y un clúster configurado, es abrir un notebook en Databricks. Este será el punto de partida para todo nuestro trabajo. Si no dispones de alguno de estos requisitos, los siguientes enlaces pueden ayudarte:

Obtener una cuenta gratuita en Azure Databricks

Configurar el clúster y crear un nuevo notebook

Paso 2: Crear una tabla de ejemplo

Creado nuestro notebook, utilizaremos Spark SQL para crear una tabla delta de ejemplo en Databricks. Abre una celda en tu notebook y ejecuta el siguiente código:

%sql
CREATE TABLE IF NOT EXISTS usuarios (
    id INT,
    email STRING,
    nombre STRING
)
USING DELTA;

Esta instrucción crea una tabla llamada usuarios con tres columnas: id, email y nombre. Estamos utilizando el formato Delta , que es el estándar en Databricks y es el que nos va a facilitar operaciones avanzadas como los upserts.

Paso 3: Insertar datos de ejemplo

Para tener algo con lo que trabajar, insertemos algunos datos en nuestra tabla:

%sql
INSERT INTO usuarios VALUES (1, 'usuario1@example.com', 'Juan');
INSERT INTO usuarios VALUES (2, 'usuario2@example.com', 'Ana');

Mostramos la inserción:

%sql
SELECT * FROM usuarios

Paso 4: Realizamos un upsert

Las tablas Delta en Databricks, soportan operaciones tipo «merge» que pueden usarse para realizar upserts. Si no estás familiarizado con este tipo de operaciones, un upsert es básicamente una operación de verificación de existencia del registro, si un registro ya existe, entonces se actualiza (update) y si no, se inserta (insert). En este caso, vamos a actualizar el nombre del usuario con id = 2 y agregar un nuevo usuario con id = 3.

Primero, creamos una tabla temporal con los nuevos datos:

%sql
CREATE OR REPLACE TEMPORARY VIEW nuevos_datos AS
SELECT 2 as id, 'usuario2@example.com' as email, 'Ana María' as nombre
UNION ALL
SELECT 3 as id, 'usuario3@example.com' as email, 'Luis' as nombre;

Realicemos ahora la operación de upsert (merge) en la tabla usuarios usando la vista nuevos_datos en la que disponemos de la actualización de Ana y la inserción de Luis:

%sql
MERGE INTO usuarios
USING nuevos_datos
ON usuarios.id = nuevos_datos.id
WHEN MATCHED THEN 
    UPDATE SET usuarios.nombre = nuevos_datos.nombre
WHEN NOT MATCHED THEN 
    INSERT (id, email, nombre) VALUES (nuevos_datos.id, nuevos_datos.email, nuevos_datos.nombre);

Paso 5: Verificamos merge

Nos aseguraremos de la inserción y actualización realizada en la tabla de usuarios con:

%sql
SELECT * FROM usuarios;

Esto nos muestra la tabla usuarios con el usuario id = 2 actualizado y el nuevo usuario id = 3 añadido.

Paso 6. Control de versiones e historial de transacciones

Ahora, veamos cómo gestionar el control de versiones y el historial de transacciones en la tabla delta :

Paso 6.1. Revisando el historial de transacciones

Para ver el historial de transacciones de nuestra tabla usuarios, podemos usar el comando DESCRIBE HISTORY:

%sql
DESCRIBE HISTORY usuarios;

Este comando mostrará un historial de todas las operaciones realizadas en la tabla usuarios, incluyendo los cambios realizados durante las operaciones de upsert , tal como podemos ver en la siguiente imagen:

Para conocer en mayor profundidad el esquema del historial y las claves de métricas de operación puedes utilizar este enlace

6.2. Acceso a versiones anteriores de los datos (Time Travel)

El «Time Travel» de Delta Lake admite la consulta de versiones de tabla anteriores basadas en la marca de tiempo o la versión de tabla (como se registra en el registro de transacciones).Esta funcionalidad es extremadamente útil para casos de uso como la recuperación de datos, auditorías y análisis de datos históricos, corregir errores en los datos, o proporcionar aislamiento de instantáneas a un conjunto de consultas para tablas que cambian rápidamente. De forma práctica permite elegir ver una versión específica de la tabla o la instantánea en un momento dado en el tiempo.

Para consultar una versión específica de la tabla , podemos utilizar el siguiente código:

%sql
SELECT * FROM usuarios VERSION AS OF 2;

En este ejemplo, 2 es el número de versión de la tabla usuarios que deseas consultar.

También podemos consultar la tabla en un punto específico en el tiempo:

%sql
SELECT * FROM usuarios TIMESTAMP AS OF '2024-01-27 11:37:00';

En este ejemplo, se consulta el estado de la tabla usuarios tal como estaba el 27 de enero de 2024 a las 11:37:00

6.3. Recuperando versiones anteriores de los datos

La característica de «Time Travel» de Delta no solo es útil para consultas retrospectivas, sino también para la restauración de datos. En nuestro ejemplo restauraremos la tabla usuarios a su estado inicial, consultando la versión deseada y utilizando los datos recuperados para sobrescribir o actualizar la tabla actual.

El proceso implica dos pasos principales: primero, identificar la versión específica de la tabla a la que quieres volver, y segundo, realizar la restauración propiamente dicha.

6.4. Identificar la versión a la que revertir

Antes de revertir la tabla, necesitas saber a qué versión quieres volver. Puedes hacerlo consultando el historial de la tabla para encontrar la versión deseada:

%sql
DESCRIBE HISTORY usuarios;

Este comando tal como vimos en punto 6.1 muestra un historial de todas las versiones de la tabla, incluyendo las operaciones realizadas en cada versión. Cada entrada en historial en historial tiene un número de versión asociado, trataremos de llevarlo a la versión 2, punto inmediatamente anterior a la realización del MERGE.

6.5. Realizando la reversión

Una vez que hayas identificada la versión deseada, usaremos el «Time Travel» para revertir la tabla a esa versión específica. Para volver a la versión 2, crearemos una vista temporal o una nueva tabla con el estado deseado de la tabla usuarios:

%sql
CREATE OR REPLACE TEMPORARY VIEW usuarios_revertidos AS
SELECT * FROM usuarios VERSION AS OF 2;

Este comando crea una vista temporal usuarios_revertidos que refleja el estado de la tabla usuarios en la versión especificada (en este caso, la versión 1). Este paso no afecta a la tabla usuarios original ni a su historial de versiones.

Luego, podemos utilizar esa vista para reemplazar los datos actuales en la tabla usuarios:

%sql
DELETE FROM usuarios;
​
INSERT INTO usuarios
SELECT * FROM usuarios_revertidos;

La versión restaurada se ve como la inicial, al insertar los registros de Ana y Juan:

Repasemos, hemos eliminado todos los datos actuales en la tabla usuarios y luego hemos insertado los datos desde la vista usuarios_revertidos, consiguiendo la «restauración» del estado de la tabla usuarios al que tenía en la versión 2. Todos estos pasos se registran como nuevas transacciones en el historial de la tabla, tal como vemos a continuación

Esta capacidad de viajar en el tiempo y de acceder al historial detallado de transacciones sitúa a Delta en Databricks como una herramienta poderosa para la gestión de datos en el mundo empresarial, donde la precisión, la integridad y la capacidad de rastrear y revertir cambios en los datos son esenciales para el éxito operativo y la toma de decisiones informada.

Conclusión

En nuestra exploración de Databricks, hemos podido ver que esta herramienta provee funcionalidades cruciales para la trazabilidad y auditoría. El control de versiones y las capacidades de ‘Time Travel’ destacan, no solo por facilitar la recuperación de datos, sino por ofrecer una protección y seguimiento completos, esenciales para la seguridad de los datos.

Sin embargo, aprovechar al máximo estas herramientas en Databricks, y mantener un equilibrio entre rendimiento y gestión de cambios, implica importantes desafíos como la optimización de consultas, la adecuación de recursos del sistema son clave para preservar la eficiencia y al mismo tiempo, una gestión rigurosa del control de versiones asegura la integridad y consistencia de los datos. Por ello una monitorización constante y el toque justo de ajustes estratégicos, nos permitirán utilizar estas potentes funcionalidades sin sacrificar eficiencia y logrando así un balance óptimo entre seguridad avanzada y rendimiento operativo.

En nuestros siguientes posts seguiremos explorando las capacidades de Delta Lake en Databricks,si te ha parecido interesante, te recomendamos los siguientes artículos:

Power BI Copilot: Innovando el Análisis de Datos con Inteligencia Artificial

Parameter Sensitive Plan para SQL Server 2022

Descubriendo Microsoft Fabric

Y si quieres llevar el análisis de tus datos al siguiente nivel, contacta con nosotros.

Complete este formulario para recibir la guía de Windows Server en Azure
*Obligatorio
Complete este formulario para recibir la guía de Windows Server en Azure
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
*Obligatorio
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud Migration Essentials
*Obligatorio
Complete este formulario para recibir Cloud Migration Essentials
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
*Obligatorio
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete this form to recieve the guide of Windows Server on Azure
*Required
Complete this form to recieve the guide of Windows Server on Azure
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
*Required
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Essentials
*Required
Complete this form to recieve Cloud Migration Essentials
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud security Advice for Nonprofit Leaders
*Required
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Simplified Ebook.
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!