[小ネタ] BigQueryのコンソール画面でテーブルが表示されないときの対応

  • 1
    いいね
  • 0
    コメント

BigQueryのコンソール画面ではテーブルの一覧を表示してくれます。しかし、大量のテーブルがあるときには明らかに存在するテーブルが表示されないこともあるようなのでその対処法を書いておきます。

コンソール画面でのテーブルの表示

BigQueryのコンソール画面を開くと、テーブル一覧が表示されます。最近だとテーブルのパーティショニングによってテーブルを日ごとに分割する必要は無くなってきているとは思いますが、テーブルパーティショニング登場以前から運用されていたプロジェクトでは日ごとにテーブルを分けるという方法がよく用いられていました。

例えば

spam_egg_20160927
spam_egg_20160928

上記のように日付付きのテーブルを作るとBigQueryのコンソール画面では

spam_egg_(2)

というようにテーブルをまとめて表示してくれます。

tables.png

しかし、テーブルの数が増えてくると、クエリを投げると結果が返って来るにも関わらずコンソール画面には表示されていないテーブルがあることに気付きました。

APIによるテーブルの表示

コンソール画面のテーブル表示数には上限があるのかもしれません。ただ、実際にテーブルが存在する以上はAPIから表示させられるはずです。

そこでCloud Consoleからbq ls [dataset]でデータセット内のテーブル一覧を表示してみます。その際-nオプションを使って表示数を指定することが可能です。

bq ls -n 10000 [dataset]

cloud_console.png

この場合、テーブル一覧は表示されましたがテーブルを日付ごとに作っている都合上同じ名前で日付だけが違うテーブルが大量に表示されてしまっています。

日付だけが違うテーブルをまとめて表示する

bq ls -n 100000 [dataset] | sed -e 's/[0-9]\{8\}//g' | uniq > tables.txt
less tables.txt

result.png

画像はぼかしが入っているのでわかりにくくなっていますが、これで表示されていなかったテーブルが表示できました。もしかしたら別の方法があるかもしれません。