Appearance
BigQuery 未更新テーブル
ルール ID: gcp.bigquery.table.stale ・ カテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中
使われなくなった中間テーブルや過去の実験データは、忘れられたままストレージ課金が続きます。このルールは、長期間更新されていないテーブルを棚卸しの候補として挙げます。
このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。
何を無駄とみなすか
90 日間変更されていないテーブル。BigQuery は 90 日更新のないテーブルを自動的に long-term storage(割安な保管単価)へ切り下げるため、この境界を越えたテーブルは「保管だけが続いている」ことの強いシグナルです。
判定条件
- テーブルの最終変更から 90 日以上経過している
- long-term storage への移行(単価切り下げ)が起きていることを確認する
最終変更時刻は「書き込み」の記録であり、読み取り(クエリ)は含みません。ビューや外部テーブルなど、実体のストレージを持たないものは対象にしません。
必須 facts
- テーブル種別(実体を持つテーブルかどうか)
- 最終変更からの経過日数と作成からの経過日数
- 論理サイズと課金リージョン
取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。
誤検知・危険になり得る条件
- 更新されないが頻繁にクエリされる参照テーブル(マスタデータ・過去実績) — 最終クエリ時刻は判定に使う API からは観測できないため、「未更新」は「未使用」を意味しない
- 他のビュー・マテリアライズドビュー・スケジュールクエリの参照元になっているテーブル(削除すると参照側が壊れる)
- 監査・法令対応のために保管しているテーブル
実行前の確認
- クエリ履歴・監査ログで直近の読み取り利用がないかを確認する
- ビュー・スケジュールクエリ・外部ツール(BI 等)からの参照有無を確認する
- 命名・ラベル・データセットの用途から保管目的を確認し、所有チームに削除可否を確認する
非破壊テストとロールバック
Safety Tier: high — 削除は復元に手順が要る操作のため、バックアップ取得と観察期間を必須にします。
- 削除前にテーブルのスナップショットを取得するか、Cloud Storage へエクスポートする
- 参照エラーや問い合わせが出ないか観察期間を置いてから削除する
ロールバック: スナップショットからの復元、またはエクスポートしたデータの再ロード。
効果検証
削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。
その他のルールはルールカタログを参照してください。