LoginSignup
9
3

More than 1 year has passed since last update.

BigQueryで特定のテーブルを参照しているクエリを見つけ出す方法

Last updated at Posted at 2021-12-06

データ基盤を運用していると、あるテーブルがどこから使われているかを確認したくなる時があります。
多くの場合は不要なテーブルの棚卸しをしているときに、念のために削除した場合に影響がないかどうかを確認したいというときです。

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

参考:

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3