Dataplexのデータリネージ機能が対応している、BigQueryの加工方法は?

こんにちは。SCSKの磯野です。

Dataplexにはデータリネージ機能があります。BigQueryでどのように加工したときがリネージ対象なのか、調べてみました。

データリネージとは?

データリネージとは、データがいつ、どこで、どのように取得され、今の状態にあるのかを追跡し、データの流れを可視化する機能です。データリネージは、Dataplex の機能名ではありますが、Google Cloud に限らず一般的に使われる用語です。

 

BigQueryでどのように加工したときにリネージされる?

公式ドキュメントには、以下の記載があります。

BigQuery プロジェクトでデータリネージを有効にすると、Dataplex によって次のリネージ情報が自動的に記録されます。

検証対象

実際にどのように加工するとリネージされるのか、以下の4パターンを調べてみました。

  1. Python(BigQuery API、pandas)
    ※実行基盤はCloudRunまたはVertex AI Workbench
  2. Python(BigQuery DataFrame
    ※実行基盤はCloudRunまたはVertex AI Workbench
  3. magicコマンド
    ※実行基盤はVertex AI Workbench
  4. Dataform

Python(BigQuery API、pandas)

CloudRun・Vertex AI Workbenchの両方で試しましたが、リネージされませんでした。

from google.cloud import bigquery
import pandas as pd
import google.cloud.logging

log_client = google.cloud.logging.Client()
log_client.setup_logging()

client = bigquery.Client()

def main():

    query = """
    SELECT PassengerId, Survived, Name 
    FROM xxx_dataset.transfer_titanic
    """

    df = client.query(query).to_dataframe()
    client.load_table_from_dataframe(df,"xxx_dataset.dataplex_test_table_by_vertexai_pandas")

if __name__ == '__main__':
    main()

Python(BigQuery DataFrame)

CloudRun・Vertex AI Workbench、どちらの環境でもリネージされました。

※BigQuery DataFrameは2024年9月時点でプレビュー版であるため注意

import bigframes.pandas as bpd
import google.cloud.logging

log_client = google.cloud.logging.Client()
log_client.setup_logging()

def main():

    query = """
    SELECT PassengerId, Survived, Name 
    FROM xxx_dataset.transfer_titanic_test_copy2
    """

    df = bpd.read_gbq(query) 
    df.to_gbq("xxx_dataset.dataplex_test_table_by_vertexai_bpd", if_exists='replace')

if __name__ == '__main__':
    main()

magicコマンド

Vertex AI Workbenchで実行したところ、リネージされました。

%%bigquery
CREATE TABLE
`dxr-poc.xxx_dataset.dataplex_test_magic`
CLONE `dxr-poc.xxx_dataset.transfer_titanic_test_copy3`;

Dataform

下記に従って検証したところ、リネージされました。

SQL ワークフローを作成して実行する  |  Dataform  |  Google Cloud

 

さまざまなユースケース

スクレイピング等でGCP環境外のデータをBigQueryに格納する場合

リネージ対象はGCP環境内のみ。一度GCSを経由すれば、GCSーBigQuery間のみリネージされます。

プロジェクトをまたぐ場合

両方のプロジェクトにて以下のAPIが有効にされていればリネージ可能です。

  • Google Cloud Data Catalog API
  • Data Lineage API

 

結論

  • GCP外のデータをリネージすることはできないものの、データ取得時に一度GCSへ格納しつつ、BigQuery DataFrameを使うことでデータリネージが可能でした。
  • pandas APIはリネージの対象外でした。
    BigQuery DataFrameを使うことでリネージは可能ですが、実行基盤を特定することはできませんでした。また、実行の度にリネージが作成されるため、視認性は低いです。
  • Dataformやmagicコマンドはリネージの対象でした。
  • すべてのリネージ情報は 30 日間のみシステムに保持されます。
    →定期実行しているものであれば問題ないですが、スポット実行のテーブルのリネージは消えてしまうため注意が必要です。

補足

  • カスタムリネージについて
    Dataplexがメタデータの自動収集の対象外としている処理については、リネージも自動作成できませんが、カスタムリネージを作成することで、表示することは可能です。
    データリネージについて  |  Data Catalog のドキュメント  |  Google Cloud
  • リネージが作成されるまで、少しタイムラグがあります。今回の検証では、ジョブが終わってから約10分ほどで生成されました。
    ※公式ドキュメントには下記の記載があります。

BigQuery リネージは、BigQuery ジョブが完了してから 24 時間以内に表示されます。

  • リネージ情報は、関連するデータソースを削除した後も保持されます。つまり、BigQuery テーブルとその Data Catalog エントリを削除しても、API を使用して最大 30 日間は、そのテーブルのリネージを読み取ることができます。
タイトルとURLをコピーしました