BigQueryテーブルをワイルドカードを用いた部分一致で消す

· ·

Google Analytics v4 で自動的に生成される Bigquery テーブルなど日付別テーブルを削除する方法を探していたのですが、個別に drop するのも大変だということで調べてみました。

手順 🔗

  1. 日付別テーブルのリストを出す

調べていると結構泥臭い感じのことやるんだなと思いましたが、日付別テーブルのテーブル名のリストに対して、1つずつ drop table コマンドのついたものを出力します。

一般パターン 🔗

  • INSERT_YOUR_DATASET_NAME : dataset 名を入れる
  • INSERT_YOUR_TABLE_NAME_ : テーブル名を入れる
1
2
3
4
select concat("drop table ",table_schema,".",   table_name, ";" )
from <INSERT_YOUR_DATASET_NAME>.INFORMATION_SCHEMA.TABLES
where table_name like "INSERT_YOUR_TABLE_NAME_%"
order by table_name desc

Google Analytics v4 など一部のデータセット 🔗

上の一般パターンで「そのリージョンにそんな名前のテーブル無いよ」とエラーメッセージが表示されることがあります。Google Analytics v4 で作成されたテーブルで発生したのですが、その場合テーブルの指定方法が若干異なりそうです。

  • INSERT_YOUR_ACCOUT_NUMBER : データセット配下のテーブルについている番号

ちょっと同じanalytics_ が付いているので気持ち悪いといえば気持ち悪いのですが、これでキレイにデータが出ました

1
2
3
4
select concat("drop table ",table_schema,".",   table_name, ";" )
from <INSERT_YOUR_DATASET_NAME>.analytics_<INSERT_YOUR_ACCOUT_NUMBER>.INFORMATION_SCHEMA.TABLES
where table_name like "analytics_<INSERT_YOUR_ACCOUT_NUMBER>.INSERT_YOUR_TABLE_NAME_%"
order by table_name desc
  1. クエリを実行し出力されたデータを Google Spreadsheet や CSV ダウンロード等を行って保存
  2. 1 行ずつdrop tableコマンドが書かれているので、それをそのままクエリ実行して消す

参考 🔗

comments powered by Disqus