0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQueryのタイムトラベル機能を活用する

Posted at

はじめに

BigQueryには"タイムトラベル"という便利な機能があり、過去のデータを一定期間遡って参照できます。データの誤更新や削除が発生した場合でも、過去の状態を簡単に復元できるため、データ管理の柔軟性が向上します

タイムトラベルとは?

BigQueryでは、テーブルの過去のスナップショットを最大7日間保持し、過去のデータにアクセスできます。これはBigQueryのストレージシステムによるもので、削除や上書きが発生しても、一定期間であれば復元が可能です。

タイムトラベルの主な用途

  • 誤って削除・更新したデータの復元
  • 過去のデータ状態を分析する
  • データの変更履歴を確認する

タイムトラベルの基本的な使い方

過去のデータを取得する

過去のデータを参照するには、FOR SYSTEM_TIME AS OFを利用します。

SELECT *
FROM `your_project.your_dataset.your_table`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY);

このクエリは、1日前のデータを取得します。INTERVALの値を変更することで、異なる時間のデータを取得可能です。

タイムトラベルを活用したデータ復元

誤ってデータを削除した場合、削除前のデータを復元できます。

例: 誤ってデータを削除した場合

DELETE FROM `your_project.your_dataset.your_table`
WHERE id = 123;

この場合、削除前のデータを復元するには、以下の手順を実施します。

  1. 削除前のデータを取得する
    SELECT *
    FROM `your_project.your_dataset.your_table`
    FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
    WHERE id = 123;
    
  2. 削除前のデータを元のテーブルに挿入する
    INSERT INTO `your_project.your_dataset.your_table`
    SELECT *
    FROM `your_project.your_dataset.your_table`
    FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
    WHERE id = 123;
    

これで、削除したデータを復元できます。

タイムトラベルの制約

タイムトラベルには以下の制約があります。

  • 最大7日前までしか遡れない
  • パーティションテーブルの場合、パーティションが削除されるとデータも消える
  • コストが発生する(タイムトラベルによるクエリも通常のクエリと同様に課金される)

まとめ

BigQueryのタイムトラベル機能を使うことで、誤ったデータ操作を修正し、過去のデータを参照することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?