(Last updated on )
BigQuery のビューで参照しているビュー・テーブルを確認して、変更してよいか判断する
BigQuery のビューで参照しているビュー・テーブルを確認して、変更してよいか判断する
BigQuery のビューで参照しているビュー・テーブルを見て、変更して良いか確認したい場面
dbt のモデルを変更したときに、参照しているクエリに影響が出ないようにしたい。
- 変更例
- モデルを削除
- モデル名を変更
- モデルの定義、抽出条件を変更
- カラム名、カラムの定義を変更
影響のあるクエリを抽出するために、SQL のコードの中に dbt で変更予定のモデル名やカラム名が含まれているビューがあるか検索する。
もし影響のあるクエリが存在すれば、dbt のモデルの変更に合わせて、参照しているクエリに影響が出ないようにクエリを修正する。
特定の文字列が SQL に含まれているビューを検索
<> で囲っている部分は、実行環境に合わせて置き換える。
<project_id>: 検索対象のプロジェクト<dataset_id>: 任意のデータセット名<region>: 検索対象のプロジェクトのregionregionが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 views 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 views
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')
* SQL の中で hogehoge という文字列を含んでいるクエリも抽出されます。
詳細を確認
上記クエリでビューが見つかった場合は、詳細を見てみる。
SELECT
*
FROM `<project_id>.<dataset_id>.<project_id>_tables`
where
regexp_contains(ddl, r'hogehoge')
