/bin/osh

ソフトフェアエンジニアリングしたりデータ分析したりプロジェクトマネジメントの勉強したりする人のブログ

BigQueryのテーブルの復元方法

疲れてたりするとうっかりBigQueryのテーブルやデータセットを消してしまうことありますよね?? でも大丈夫!BigQueryは最新2日間であれば1秒ごとに全データのスナップショットを取っているのです!

ただし削除された後に同名のテーブルが作成されるとスナップショットを参照できなくなります!

テーブルの復元方法

スナップショットには以下の構文でアクセスできます。

  • PROJECT_ID:DATASET.TABLE@<time>

<time>はエポックタイム(Unix Timestamp)で表わされます。 詳しい情報は以下のURLから。 https://cloud.google.com/bigquery/table-decorators?hl=ja

スナップショットをコピーするにはbqコマンドを使用します。 (インストール方法や使い方は以下のURLから https://cloud.google.com/bigquery/bq-command-line-tool?hl=ja)

安全に復旧するためには一度temporaryなデータセットにデータをコピーしてから、 元の場所にコピーしましょう。

例:

  1. dataset_name.table_nameのスナップショットをtmp_dataset.table_nameにコピー
    • bq cp dataset_name.table_name@1540869645 tmp_dataset.table_name
  2. tmp_dataset.table_namedataset_name.table_nameにコピー
    • bq cp tmp_dataset.table_name dataset_name.table_name

データセットごとやってしまった場合はこれをデータセット内の全テーブルに行うことでデータセットを復旧できます。
これでいつテーブルを消しても大丈夫!

参考: