BigQueryのLong Term Storageが高いなーとおもったので可視化と解決した
BigQueryのストレージコストが増加していたため、INFORMATION_SCHEMAを使って可視化・原因特定し、不要なシャーディングテーブルを削除してコストを数百ドル削減した記録。

BigQueryを使う頻度が増えてきた事もあり、一度コストをしっかりみるかと思い。見たことがきっかけ。
とりあえず9月から増えだした事は理解
そもそもLong term storageって?
cloud.google.comLong-term storage includes any table or table partition that has not been modified for 90 consecutive days. The price of storage for that table automatically drops by approximately 50%. There is no difference in performance, durability, or availability between active and long-term storage.
90日連続して変更されていないテーブル(またはパーティション)
もうツールを作成して少し調べてみた
techblog.zozo.comINFORMATION_SCHEMAを用いたBigQueryのストレージ無駄遣い調査 - ZOZO TECH BLOG
が役に立ちました。
- この記事内に書かれているスクリプトを Colab で実行してBQにテーブルを作成して集約
- Looker(旧Data Studio)で可視化

調べてみるとテーブル数が多い。このテーブルはシャーディング(_yyyymmmdd)
更に7月まではシャーディングで取得していたけど、このタイミングからdbtなどで取得方法が変わっていて、シャーディングテーブルはつくられなくなっていた。
原因は特定できたので、あとは消すか消さないか。消すにしてもすべて消すか一部残すか。利用用途など色々確認した結果不要と判断したので、削除することにしました
削除編
SELECT
CONCAT("bq rm -f -t ",table_schema,".", table_name, ";" )
FROM `<project_id>.<dataset>`.INFORMATION_SCHEMA.TABLES
WHERE
table_name LIKE "<ここにprefix>_%"
ORDER BY table_nameこれで削除コマンドが出力されるのであとは実行するだけでした。

結果1番先頭のテーブルは残りましたが、それ以外はスッキリしました。コストとしても数百ドル下がる結果ととなりました。もしBQのコストにお悩みの方がいたら参考にしていただければと思いました。
techblog.zozo.comINFORMATION_SCHEMAを用いたBigQueryのストレージ無駄遣い調査 - ZOZO TECH BLOG
改めてになりますが、参考になりました感謝です。