見出し画像

1. BigQueryで複数のテーブルを一括削除する方法

BigQueryで複数のテーブル(dataset.table)を一括削除する方法をご紹介します。
BigQueryでテーブルを削除する方は様々ですが、今回は1パターンご紹介します。

1. Cloud Shellターミナルのbq コマンドでテーブルを削除

2. SQLでテーブルを削除(後日追記予定)

BigQueryやデータ分析に関するお仕事のご相談はTwitterLinkedinからお願いいたします。

Cloud Shellターミナルのbqコマンドでテーブルを削除

前準備:削除テーブル一覧の用意

bqコマンドで一括削除するために、前準備を行います。
以下のクエリをBigQueryで実行することで、bqのテーブル削除コマンドの一覧を用意することができます。

SELECT
 CONCAT("bq rm -f -t ",table_schema,".",   table_name, ";" )
 FROM データセット名.INFORMATION_SCHEMA.TABLES
 WHERE 
   table_name LIKE "テーブル名_%"
ORDER BY table_name

上記のクエリの実行例をご紹介します。
例えば、overall_results.test_YYYYMMDDのようなテーブルがあったとします。

画像1

overall_results.test_20210901、overall_results.test_20210902、overall_results.test_20210903の3テーブルを削除したいとします。
この場合、以下のクエリを実行してbqコマンドの実行分を3行用意します。

SELECT
CONCAT("bq rm -f -t ",table_schema,".",   table_name, ";" )
FROM overall_results.INFORMATION_SCHEMA.TABLES
WHERE
  -- LIKEなどを用いて対象テーブルのみに絞り込みます
  table_name LIKE "test_202109%"
ORDER BY table_name

以下は実行結果になります。

画像2

スプレッドシートに削除用コマンドをコピー

「SAVE RESULTS」からGoogleスプレッドシートにコピーします。
また、bqコマンドの実行文+空行をコピーします。

画像3

Cloud Shellの起動

Cloud Consoleからbqコマンドを利用するために、Cloud Shellをアクティブにする必要があります。
こちらのURLをクリックし、Cloud Shellをアクティブにします。

https://console.cloud.google.com/bigquery?cloudshell=true&hl=ja&_ga=2.45188900.1447178286.1633947971-2037873899.1633947971

Cloud Shellにコマンドをペースト

Cloud Shellにbqコマンドをペーストすると、削除が実行されます。
※誤ったテーブルが指定されていないか確認の上、ペーストすることをおすすめします。

画像4

これで削除が完了しました。

間違えて削除したテーブルの復元

間違えて削除したテーブルも7日以内であれば、テーブルを復元することができます。

bqコマンドで復元する例をご紹介します。

bq cp mydataset.mytable@1418864998000 mydataset.newtable

説明
bq cp データセット名.テーブル名@テーブルが存在していたときのUNIXタイムスタンプ データセット名.新しいテーブル名​


参考記事

以下の記事でその他のテーブル削除方法が紹介されています。


もし気に入っていただけたら、ぜひサポートお願いします!