Open takegue opened 2 years ago
RECURISVE構文とINFORMATION_SCHEMA.JOBSBY* を組み合わせることで ジョブの実行履歴からデータリネージを生成することができる
RECURSIVE構文を利用することにより、SQLの最適的取り扱いが可能である。
またBigQueryが提供するメタデータ INFORMATION_SCHEMA.JOBSBY* によってクエリの実行履歴が取得できるが これには referenced_tables といった形でクエリの実行時に参照したテーブルの情報が記録されている。
referenced_tables
次の実装は、ジョブの実行履歴からテーブルのリネージを生成する例となる。 ついでにテーブルの依存関係だけでなくユーザの呼び出しクエリも記載している。
これを利用することで、
などができるだろう
WITH RECURSIVEは TVFなどで関数化することができないため、ちょっと使いづらく困った
https://github.com/takegue/estante/blob/2b483d66600e9bcbc31c8185152c89eb61b14e5c/codes/bigquery/dashboard/deps.sql#L1-L116
RECURISVE構文とINFORMATION_SCHEMA.JOBSBY* を組み合わせることで ジョブの実行履歴からデータリネージを生成することができる
RECURSIVE CTE による再帰的SQLの記述
RECURSIVE構文を利用することにより、SQLの最適的取り扱いが可能である。
INFORMATION_SCHEMAによる参照テーブルの取得
またBigQueryが提供するメタデータ INFORMATION_SCHEMA.JOBSBY* によってクエリの実行履歴が取得できるが これには
referenced_tables
といった形でクエリの実行時に参照したテーブルの情報が記録されている。実装
次の実装は、ジョブの実行履歴からテーブルのリネージを生成する例となる。 ついでにテーブルの依存関係だけでなくユーザの呼び出しクエリも記載している。
これを利用することで、
などができるだろう
感想
WITH RECURSIVEは TVFなどで関数化することができないため、ちょっと使いづらく困った
https://github.com/takegue/estante/blob/2b483d66600e9bcbc31c8185152c89eb61b14e5c/codes/bigquery/dashboard/deps.sql#L1-L116