BigQuery のビューで参照しているビュー、テーブルを探す
BigQuery のビューで参照しているビュー、テーブルを探す
BigQuery のビューで参照しているビュー、テーブルを探したい場面
dbt
のモデルを変更したときに、参照しているクエリに影響が出ないようにしたい。
- 変更例
- モデルを削除
- モデル名を変更
- モデルの定義、抽出条件を変更
- カラム名、カラムの定義を変更
影響のあるクエリを抽出するために、SQL
のコードの中に dbt
のモデル名が含まれているか検索する。
もし影響のあるクエリが存在すれば、dbt
のモデルの変更に合わせて、参照しているクエリに影響が出ないようにクエリを修正する。
特定の文字列が SQL に含まれているビューを検索
<>
で囲っている場所は、実行環境に合わせて置き換える。
- project_id: 検索対象のプロジェクト
- dataset_id: 任意のデータセット名
- region: 検索対象のプロジェクトの
region
region
がasia-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
という文字列を含んでいるクエリも抽出されます。