BigQueryのタイムトラベル機能でデータを過去の状態に戻す方法

 2024.03.31 XIMIX 重永

ximix_blog_bq_timetravel

はじめに

ビッグデータの分析を行う際、データの安全性は最優先事項です。

BigQueryは、その安全性を増すための素晴らしい機能の一つに「タイムトラベル」というものがあります。

この機能は、データが意図しない変更や削除に見舞われた場合に前の状態に戻すことを可能にします。

つまり、タイムトラベル機能を使用すると、特定のポイントまでテーブルの状態を復元でき、データ損失からの回復に役立てることができます。

タイムトラベルはデフォルトで7日間のデータのみを保持しています。この範囲を超えると、データは復元できません。タイムトラベル期間は2~7 日の範囲で設定でき、データセット レベルで設定すると、データセット内のすべてのテーブルに適用されます。

そして、削除されたテーブルは、テーブルの削除時に有効であったタイムトラベル期間に常に関連付けられます。たとえば、タイムトラベル期間を 2 日間から 7 日間に延長した場合、変更前に削除されたテーブルは 2 日間しか復元できません。同様に、タイムトラベル期間が 5 日間で、その時間を 3 日に短縮した場合、変更前に削除されたテーブルは 5 日間復元できます。

タイムトラベル機能の使い方

前提条件

BigQueryのタイムトラベル機能を利用するには、データセットに対する以下のロールがユーザーアカウントに付与されている必要があります。

  • BigQuery Admin (roles/bigquery.admin)

タイムトラベル機能で特定時点のテーブルに復元する方法

タイムトラベル機能で特定時点のテーブルに復元するには以下3つの方法がありますが、本記事では③の方法を紹介します。①②はGoogle Cloudの公式ドキュメントに記載があるので、そちらを参照してください。

  1. SELECTクエリで特定時点のデータを取得する
  2. bqコマンドで特定時点のテーブルを別名のテーブルとして復元する
  3. bqコマンドで特定時点のテーブルを同じテーブル名で復元する

$ bq cp -f [データセット名].[テーブル名]@-[現在時刻からの相対オフセット] [データセット名].[テーブル名]

-fオプションで、復元対象のテーブルの上書き更新を確認メッセージ無しで実行します。

例えば、データセット「dataset1」のテーブル「table1」を1時間前の状態に復元したい場合は以下のコマンドになります。

$ bq cp -f dataset1.table1@-3600000 dataset1.table1

注意点として、復元したテーブルの最終更新日時は復元を実行した時間になりますので、テーブルのメタデータまで完全にテーブルが復元されるわけではありません。

まとめと感想

BigQueryのタイムトラベル機能は、データの誤操作や意図しない削除に対して非常に強力なセーフティネットを提供します。データを過去のある時点の状態に戻すことができるこの機能は、多くのビジネスにとって有益なリスク回避策となるでしょう。ただし、最長で7日間の制限や他の制限事項に注意しながら、適切なデータ管理戦略の一環として利用することが重要です。

参考情報

Google Cloud、Google Workspace に関するご相談はXIMIXへ!

Google Cloud、Google Workspaceに関する お問い合わせはこちら
XIMIX®は日本情報通信株式会社が所有する登録商標です。(商標登録第6755234号)

執筆者紹介

Hikaru Shigenaga
XIMIX 重永
2019年よりGoogleCloudで開発を始める。 主に、データ分析基盤構築案件のPM/PLを担当。 主にGKE・CloudFunctions・BigQuery・CloudStorage・Matillion(ETLツール)を扱う。 Looker・Tableauの勉強中。

BigQueryのタイムトラベル機能でデータを過去の状態に戻す方法

BACK TO LIST