BigQueryでの削除されたテーブルの復元方法
お疲れ様です。
BigQueryのデフォルトのテーブルの有効期限
の設定によりデータが消えてしまっていた..!復元したい!!という方に向けた記事です。
はじめに
Firebase Analyticsで取得したイベント情報をBigQueryに連携していたのですが、データの有効期限が60日となっており、それ以前のデータが閲覧できませんでした。
BigQueryにはタイムトラベルという機能があり、7日前までなら復元できるとのこと。
=> 試してみます!
遡りたい時点のエポックミリ秒を取得
「5日前に戻りたい!!」のでBigQueryにて以下を実行!
SELECT UNIX_MILLIS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 5 DAY))
1748587571303
が取得できました。
過去の削除されたテーブルを既存のデータセットにコピー
現在2025年6月4日。BigQueryには2025年4月5日までのデータしか残っていませんでした。
4月分は残しておく必要があるため、analytics_379006538
の4月1日から4月4日のテーブルを復元したい!です。
ターミナルにて以下を実行し、5日前時点のevents_20250401
からevents_20250404
までを復元したいです。
↑のような状態で最も古い日付が2025年4月5日です。
bq cp analytics_379006538.events_20250401@1748587571303 analytics_379006538.events_20250401
ログ
(project-id部分のみ置き換えてあります)
(base) maakusaito ~ % bq cp analytics_379006538.events_20250401@1748587571303 analytics_379006538.events_20250401
Waiting on bqjob_r29b9dae97f44b806_0000019739bddee4_1 ... (0s) Current status: R Waiting on bqjob_r29b9dae97f44b806_0000019739bddee4_1 ... (0s) Current status: DONE
Table '{project-id}:analytics_379006538.events_20250401@1748587571303' successfully copied to '{project-id}:analytics_379006538.events_20250401'
成功した模様。
BigQueryを確認してみます。
20250401
のデータがありました!復元できてます!!
同様に2025年4月2~4日のデータを復元します。
4月2日分
bq cp analytics_379006538.events_20250402@1748587571303 analytics_379006538.events_20250402
4月3日分
bq cp analytics_379006538.events_20250403@1748587571303 analytics_379006538.events_20250403
4月4日分
bq cp analytics_379006538.events_20250404@1748587571303 analytics_379006538.events_20250404
最終確認してみましょう!
ちゃんとありました!
復元データの確認
テーブルだけ復元されていて、データがない...なんてことないですよね。
念のため確認してみます。
BigQueryにて以下のSQLにて確認。
SELECT * FROM `{project-id}.analytics_379006538.events_20250401` LIMIT 100
ちゃんとありました。一件落着。
最後に
ふぅ。よかった。
もし同じ境遇の方いたら参考にしてみてください。
GPT o3ががまともな回答出してくれなかったので、久しぶりにググって解決できました。
参考
ありがとうございます!
Xでは、FlutterやAIについてキャッチアップした情報を発信しています!
フォローお願いします!
Discussion