hene

hene.dev

BigQuery のビューで参照しているビュー、テーブルを探す

BigQuery のビューで参照しているビュー、テーブルを探す

BigQuery のビューで参照しているビュー、テーブルを探したい場面

dbt のモデルを変更したときに、参照しているクエリに影響が出ないようにしたい。

  • 変更例
    • モデルを削除
    • モデル名を変更
    • モデルの定義、抽出条件を変更
    • カラム名、カラムの定義を変更

影響のあるクエリを抽出するために、SQL のコードの中に dbt のモデル名が含まれているか検索する。 もし影響のあるクエリが存在すれば、dbt のモデルの変更に合わせて、参照しているクエリに影響が出ないようにクエリを修正する。

特定の文字列が SQL に含まれているビューを検索

<> で囲っている場所は、実行環境に合わせて置き換える。

  • project_id: 検索対象のプロジェクト
  • dataset_id: 任意のデータセット名
  • region: 検索対象のプロジェクトの region
    • regionasia-northeast1 の場合は、region-asia-northeast1 のデータセットを参照

<project_id>.<dataset_id>.<project_id>_tables

<project_id>.<dataset_id>.<project_id>_tables というビューの名前で保存。

TABLES ビュー  |  BigQuery  |  Google Cloud で、抽出できるカラムを確認できます。

#standardSQL

with tables as (
  select
    concat(table_catalog, '.', table_schema, '.', table_name) as view_id
    , table_catalog
    , table_schema
    , table_name
    , table_type
    , ddl
    , creation_time
  from `<project_id>.region-<region>.INFORMATION_SCHEMA.TABLES`
)

select
  *
from tables
order by
  creation_time desc

BigQuery のクエリで参照している dbt のモデルを探す

hogehoge という dbt のモデルを参照しているクエリを探したい場合。

SELECT
  view_id
FROM `<project_id>.<dataset_id>.<project_id>_tables`
where
  regexp_contains(ddl, r'hogehoge')
LIMIT 1000

SQL の中で hogehoge という文字列を含んでいるクエリも抽出されます。

参考