8. Uso de Time Travel

La potente función de viaje en el tiempo de Snowflake permite acceder a datos históricos, así como a los objetos que almacenan los datos, en cualquier momento dentro de un período de tiempo. La ventana predeterminada es de 24 horas y, si usa Snowflake Enterprise Edition, se puede aumentar hasta 90 días. La mayoría de los DataWarehouses de datos no pueden ofrecer esta funcionalidad, pero, lo adivinó, ¡Snowflake lo hace fácil!

Algunas aplicaciones útiles incluyen:

  • Restaurar objetos relacionados con datos, como tablas, esquemas y bases de datos que pueden haberse eliminado.
  • Duplicación y copia de seguridad de datos de puntos clave en el pasado.
  • Analizar el uso y la manipulación de datos durante períodos de tiempo específicos.

Drop y Undrop a una tabla

Primero, veamos cómo podemos restaurar los objetos de datos que se han eliminado accidental o intencionalmente.

En la hoja de trabajo CITIBIKE_ZERO_TO_SNOWFLAKE, ejecute el siguiente comando DROP para eliminar la tabla JSON_WEATHER_DATA:

drop table json_weather_data;

Consulte la tabla:

select * from json_weather_data limit 10;

En el panel de resultados en la parte inferior, debería ver un error porque la tabla subyacente se ha eliminado:

Ahora, restaure la tabla:

undrop table json_weather_data;

La tabla json_weather_data debe restaurarse. Verifique ejecutando la siguiente consulta:

--verify table is undropped select * from json_weather_data_view limit 10;

 Roll Back a una tabla

Hagamos retroceder la tabla TRIPS en la base de datos de CITIBIKE a un estado anterior para corregir un error DML no intencional que reemplaza todos los nombres de las estaciones en la tabla con la palabra "ups".

Primero, ejecute las siguientes instrucciones SQL para cambiar su hoja de trabajo al contexto adecuado:

use role sysadmin;
use warehouse compute_wh;
use database citibike;
use schema public;

Ejecute el siguiente comando para reemplazar todos los nombres de estaciones en la tabla con la palabra "ups":

update trips set start_station_name = 'oops';

Ahora, ejecute una consulta que devuelva las 20 estaciones principales por número de viajes. Tenga en cuenta que el resultado de los nombres de las estaciones contiene solo una fila:

select
start_station_name as "station",
count(*)
as "rides"
from trips
group by 1
order by 2 desc
limit 20;


Normalmente tendríamos que luchar y esperar tener una copia de seguridad por ahí.

En Snowflake, podemos simplemente ejecutar un comando para encontrar el ID de consulta del último comando ACTUALIZAR y almacenarlo en una variable llamada $QUERY_ID.

set query_id =
(
select query_id from table(information_schema.query_history_by_session (result_limit=>5))
where query_text like 'update%' order by start_time limit 1);

UsaTime Travel para recrear la tabla con los nombres correctos de las estaciones:

create or replace table trips as(select * from trips before (statement => $query_id));

Vuelva a ejecutar la consulta anterior para verificar que se hayan restaurado los nombres de las estaciones:

select
start_station_name as "station",
count(*)
as "rides"
from trips
group by 1
order by 2 desclimit 20;

 

 

 

 

Frame 212
Frame 213
Frame 214
Frame 215
Frame 216
Frame 217
Frame 218
Frame 231
Frame 208
Frame 209
Frame 210
Frame 211

CONTACTA CON NOSOTROS

Si deseas que uno de nuestros expertos se contacte para brindarte una mayor información personalizada de nuestras soluciones y servicios, déjanos tus datos: