BigQuery のリネージュ機能を使ってみた

# BigQuery のリネージュ機能を使ってみた

## はじめに
2022/12/22 に、BigQuery にリネージュタブが追加されました。（プレビュー公開）
リネージュタブでどんな情報が見れるか確認してみました。

## ドキュメント
リネージュタブについてはドキュメントが公開されていました。

https://cloud.google.com/bigquery/docs/data-catalog#data_lineage

https://cloud.google.com/data-catalog/docs/how-to/track-lineage?hl=ja

ドキュメントによると、コピージョブで作成したテーブルとBigQuery のクエリで操作したテーブルに関する情報が見れるとのことでした。

## 動作検証
### 準備
リネージュタブを使うには Data Lineage API と Data Catalog API の両方を有効にする必要があります。
BigQuery のテーブルを開き、「リネージュ」タブを開くと警告が出ます。
「必要なAPIの有効化」をクリックすると二つとも有効化されます。
![API有効化.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/800f914e-68bf-3456-6643-4dbc70c7a3af.png)


### 表示の見方
リネージュの表示は以下画像のようになっています。
![リネージュタブ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/d45c4875-6133-6606-84b1-92ce4cd7fc58.png)

アイコンは2種類ありました。
・テーブル
・クエリ

#### テーブルアイコン
![テーブルアイコン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/af361d6e-f145-008b-2950-30a1a1cf83fa.png)
テーブルアイコンをクリックすると、テーブルの詳細情報と列を確認することができます。
![テーブルアイコン詳細パネル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/84f1b601-efbd-842d-4d37-e92a5d0fb93f.png)
![テーブルアイコン列パネル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/c787116c-10ef-2ad2-6bc8-e69d3e0b1d07.png)

「リネージを開く」ボタンをクリックすると、そのテーブルに紐づくリネージュが表示されます。
![リネージを開くボタン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/1dc1f345-35a5-ef35-64f1-21cc3d223a6e.png)


「クエリ」ボタンをクリックすると、そのテーブルに対するクエリエディタタブが開きます。

#### クエリアイコン
![クエリアイコン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/bb4b3358-52df-1ba0-bf90-3a326c4b7ce5.png)

クエリアイコンをクリックすると、クエリの詳細情報と実行情報を確認することができます。
![クエリアイコン詳細パネル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/c1a4c296-d9ae-6fb7-d251-638bd8e979a4.png)
![クエリアイコン実行パネル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/131f35fb-59d3-15bc-44e2-690cb54683ba.png)

実行情報の「その他」ボタンを押すと、実行の詳細を確認できます。
![クエリアイコン実行パネルその他ボタン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/9a8a3882-ccc9-a75c-094f-1e4b912217b6.png)


以降は、クエリを実行したときに気になったことをまとめました。

### コピージョブで作成したテーブル
コピージョブでリネージュが表示されるとのことでしたが、テーブル詳細タブの「コピー」ボタンでコピーした場合はリネージュが表示されませんでした。
![コピーボタン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/aa2a652a-70b8-439e-e361-0a5bb17098ea.png)

SQL クエリ `CREATE TABLE <宛先テーブル> COPY <ソーステーブル>` でコピージョブを実行するとリネージュが表示されました。
まだ対応してないのかもしれません。


### 副問い合わせ実行時のリネージュ
UPDATE 文で副問い合わせを行いました。

``` sql
UPDATE update_table
SET
  var1 = (SELECT var1 FROM source_table1 WHERE var1="aaa"),
  var2 = (SELECT var5 FROM source_table2 WHERE var1="ccc")
WHERE var1="bbb"
```

リネージュを見ると、クエリアイコンが2つ表示された状態でした。
![副問い合わせリネージュ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/704050b9-aea7-5c85-d539-d86d474c0beb.png)


クエリアイコンの詳細はどちらも同じだったので、左側が副問い合わせ、右側が UPDATE 句という意味と思われます。

## その他気になったこと
リネージュタブを開くたびに「次のロケーションからリネージを取得できません: europe-west12」という警告が表示されました。
![リネージュ取得できないメッセージ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/bac6240b-b66e-9584-3b10-1f38c9cfe58d.png)
ドキュメントでは未対応リージョンの記載はありませんでしたが、投稿時点で europe-west12 リージョンはまだ対応してなさそうです。

また、今回のプレビューではビューや、Google が提供する BigQuery へのデータ出力機能（Datastream for BigQuery など）を使った場合のリネージュはありませんでした。
今後のGAやアップデートで追加されるのを期待です。

以上です。誰かの参考になれば幸いです。