データ基盤を運用していると、あるテーブルがどこから使われているかを確認したくなる時があります。
多くの場合は不要なテーブルの棚卸しをしているときに、念のために削除した場合に影響がないかどうかを確認したいというときです。
BigQueryにはINFORMATION_SCHEMA.JOBSというクエリの実行履歴に関するVIEWがあるので、これを利用して調査をしてみます。
必要な権限
この処理を行うためには以下の2つのどちらかのロールが必要です。
- BigQuery Resource Viewer
- BigQuery Administrator
調査クエリ
以下のクエリでテーブルに対して実行されているクエリが調査できます。
FROMの後ろで指定しているVIEWは各自の環境に合わせて調整してお使いください。
SELECT
job_id,
creation_time,
project_id,
user_email,
job_type,
statement_type,
destination_table,
referenced_tables,
query -- NOTE: JOBS_BY_PROJECTにしないとクエリ文字列は取得できない
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
WHERE
(
SELECT
LOGICAL_OR(rt.project_id = "プロジェクトID" AND
rt.dataset_id = "データセット名" AND
rt.table_id = "テーブル名"
)
FROM UNNEST(referenced_tables) AS rt
)
ORDER BY creation_time DESC
参考: