takegue / estante

0 stars 0 forks source link

BigQueryのジョブ履歴からデータリネージを生成する #40

Open takegue opened 2 years ago

takegue commented 2 years ago

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