中野智文のブログ

データ・マエショリストのメモ

BigQuery でテーブルを正規表現を指定して削除する

背景

BigQuery で特定のテーブルをワイルドカードで指定して削除したいことがある。ところが、CLIコマンドである bq はそのようなワイルドカード指定はできない。

データセットのファイル一覧を出して、それを egrep で抽出する

下記の <dataset_name> と、<regular expression> にそれぞれ、データセット名と正規表現を書く。

bq --format json ls -n 10000 <dataset_name> | jq -r 'map("<dataset_name>."+ .tableReference.tableId)|.[]' | egrep '<regular expression>' | xargs -L1 bq rm -f

ただし、本当に望ましいファイルが対象となっているかを最後の削除を除いたコマンドである、

bq --format json ls -n 10000 <dataset_name> | jq -r 'map("<dataset_name>."+ .tableReference.tableId)|.[]' | egrep '<regular expression>' 

で一旦確認したり、ファイル数を少なくして実行してみることをおすすめする。

追記

  • 2018-06-12 .tableId で取得できなくなっていたので、.tableReference.tableId に修正