Skip to content

BigQuery 未更新テーブル

ルール ID: gcp.bigquery.table.staleカテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中

使われなくなった中間テーブルや過去の実験データは、忘れられたままストレージ課金が続きます。このルールは、長期間更新されていないテーブルを棚卸しの候補として挙げます。

このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。

何を無駄とみなすか

90 日間変更されていないテーブル。BigQuery は 90 日更新のないテーブルを自動的に long-term storage(割安な保管単価)へ切り下げるため、この境界を越えたテーブルは「保管だけが続いている」ことの強いシグナルです。

判定条件

  • テーブルの最終変更から 90 日以上経過している
  • long-term storage への移行(単価切り下げ)が起きていることを確認する

最終変更時刻は「書き込み」の記録であり、読み取り(クエリ)は含みません。ビューや外部テーブルなど、実体のストレージを持たないものは対象にしません。

必須 facts

  • テーブル種別(実体を持つテーブルかどうか)
  • 最終変更からの経過日数と作成からの経過日数
  • 論理サイズと課金リージョン

取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。

誤検知・危険になり得る条件

  • 更新されないが頻繁にクエリされる参照テーブル(マスタデータ・過去実績) — 最終クエリ時刻は判定に使う API からは観測できないため、「未更新」は「未使用」を意味しない
  • 他のビュー・マテリアライズドビュー・スケジュールクエリの参照元になっているテーブル(削除すると参照側が壊れる)
  • 監査・法令対応のために保管しているテーブル

実行前の確認

  • クエリ履歴・監査ログで直近の読み取り利用がないかを確認する
  • ビュー・スケジュールクエリ・外部ツール(BI 等)からの参照有無を確認する
  • 命名・ラベル・データセットの用途から保管目的を確認し、所有チームに削除可否を確認する

非破壊テストとロールバック

Safety Tier: high — 削除は復元に手順が要る操作のため、バックアップ取得と観察期間を必須にします。

  1. 削除前にテーブルのスナップショットを取得するか、Cloud Storage へエクスポートする
  2. 参照エラーや問い合わせが出ないか観察期間を置いてから削除する

ロールバック: スナップショットからの復元、またはエクスポートしたデータの再ロード。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。

その他のルールはルールカタログを参照してください。