この記事は インフォマティカ Advent Calendar 2021 Day 13 の記事として書かれています。
はじめに
インフォマティカのデータカタログである、 Enterprise Data Catalog(以下、EDC)の大きな特徴として、リネージュを可視化できるという機能があります。
リネージュ(Lineage)とは系統や系列を表す英単語で、DBやファイルシステム間でのデータの流れを可視化し、データの流通経路の全体像を、視覚的に把握する事ができる大変便利な機能です。詳細はこちらの過去のブログもご覧下さい。
今回は、最新のCould NativeなDWHソリューションである、Snowflakeのリネージュを可視化してみます。
インフォマティカのデータカタログ(EDC)では、Snowflakeの固有の機能も含めたメタデータおよびリネージュを取得する事ができます
メタデータ
Database, Schema, Tables, Views, External tableをはじめとするデータ・オブジェクトに加えて、Stage, Pipe, Procedureなどのデータ・パイプラインやスクリプトも取得することができます。
こちらの過去のブログでも詳細を記載しています
- メタデータの一覧 (Schema, Tablesの確認、ViewsのSQLとリネージュ)
※クリックして拡大表示できます
- リレーションの表示 (外部キー、Viewなどの関係性)
Stage / Pipesのリネージュ
前の章で見たメタデータは、各オブジェクトのシステム属性を表示したものとなりますが、この後の章ではSnowflakeが持つデータの流れであるリネージュを視覚化してみたいと思います。
Snowflakeでは、標準機能として下記のようなデータロードを行うオプションがあり、クラウド・ストレージなどの外部データを容易にかつ継続的に取り込む事ができます。
1. ステージ(Stage) : 各種クラウド・ストレージ上のファイルへのSnowflakeからの透過的なアクセス
2. パイプライン(Snowpipe / Pipe) : ステージからの一括もしくは継続的なデータロード
- ステージとパイプラインのリネージュ
下記のイメージの例では、ステージとして定義されたS3上に配置されたCSVファイルから、Snowpipeを使ってSnowflakeのテーブルに対してロードするパイプライン処理が定義されています。それらをデータカタログを使って、カラムレベルでのリネージュの表示、およびPipeで実行されているSQLクエリの内容を確認する事ができます。
これによりデータの流れと内部的な変換ロジックを、正確にかつ視覚的に確認することができます。
※クリックして拡大表示できます
Stored procedureのリネージュ
Snowflake上でのアプリケーション開発として、ストアドプロシージャやUDFs(ユーザー定義関数)などを使って、バッチ処理などの複雑で高度な処理を実装することができます。
インフォマティカのデータカタログでは、それらの複雑なコードやスクリプト群を解析し、メタデータやリネージュとして取り込み、ブラックボックスになりがちなビジネスロジックの全体像やデータの流れ、詳細な変換ロジックを容易に把握する事が出来ます。
具体的には、Javascriptで書かれたストアドプロシージャで処理するデータの流れを解析し、それらを線でつながったリネージュとして可視化でき、さらにドリルダウンすることで、カラム単位でどのようなロジックを使って変換処理をしているかをSQLの構文レベルも含めて解析する事で詳細に把握する事ができます。
また、UDFs(ユーザー定義関数)についても、SQLベースの定義から解析することができます。
下記のイメージでは、リネージュ上でドリルダウンして、詳細なロジックを確認できる事がわかります。
まとめ
インフォマティカのデータカタログである、Enterprise Data Catalog(EDC)では標準的なメタデータの取得に加えて、リネージュの取得・描画に関する機能を強化しており、さまざまなデータソースから高度で複雑なリネージュを取得する事が出来ます。
別の記事において、他システムからのリネージュ取得についても解説していきます。