この記事は「NEXTSCAPE Advent Calendar 2022」の2日目です。
こんにちは、クライアントビジネス推進部の島田です。
まずは、、サッカー日本代表W杯決勝トーナメント進出、おめでとうございます!!今日は既に応援でほとんどの体力を使ってしまいました。このままサッカーについて語りたいような気もしていますが、今日はちょっとだけ別の話をしたいと思います。
今年はAzure Synapse Analytics (以下、Synapase Analytics) というMicrosoft のデータ分析用のプラットフォームを用いてデータと戯れることの多かった1年でした。
Synapase Analytics にはSynapse Pipeline というETLツールがあるのですが、ETLツールの保守をしていると処理が複雑になってきて「このデータソースどうやって作ったんだっけ?」がすぐに出てこないことが多くなってしまいました。そんなときに試してみたMicrosoft Purview (以下、Purview ) のLineage機能が便利だったので紹介したいと思います。
Lineage(リネージュ)機能とは
Lineage(リネージュ)というのは、日本語で「血統・系譜」のような意味を持つ単語ですが、まさに「データの系図=このファイルのこの列は、データソースAの列1とデータソースBの列3から派生したもの」を作ってくれる機能です。(下図参照)
Lineage を使うと何が嬉しいのか
例えば、以下のような利点があります。
- 変更しようとしている処理がどのデータセットに影響するかが把握しやすい
- Output データを起点にデータの成り立ちが一目瞭然
ETL プロセスが複雑になってくると、いきなり詳細処理を追っていくのではなく、このようにおおまかなデータの系図を俯瞰して見るべき箇所を素早く特定した上で修正等を行えるようになると担当者のストレスもかなり軽減されるかなと思います。
Lineage を使うための準備
まずは準備です。Lineage 自体はSynapse Analytics 以外にも様々なサービスに対応しているものですが、今回はSynapse Analytics との接続をするための手順を説明します。
おおまかに分けると、以下のステップになります。
- Purview アカウントの作成
- Synapse Analytics ワークスペースとPurview アカウントの接続
- Synapse Pipeline の実行
1. Purview アカウントの作成
Azure のリソースを作成する一般的な手順でPurview アカウントも作成することができます。
作成時のパラメータとしてはネットワーク環境をどうするかくらいです。作成後にはMicrosoft Purview ガバナンスポータルという画面から操作をすることがほとんどになると思いますが、ガバナンスポータルの説明は以下のドキュメントが詳しいです。
2. Azure Synapse Analytics ワークスペースでPurview アカウントへの接続
Purview アカウントができたら、Lineage 機能を使いたいPipeline があるSynapse Analytics ワークスペースとPurview アカウントを接続します。Synapse Analytics Studioを開き、[Manage] -> [Microsoft Purview] -> [Purview アカウントに接続] をクリックします。
作成したPurview アカウントを選択し、[適用] をクリックします。
この操作に必要な権限は以下のドキュメントに記載されていましたが、Purview アカウントに対して必要なロールがあいまいだったので、参考までに本検証時の操作アカウントが持っていたロールを記載しておきます。
- Purview アカウントのroot コレクションに対する以下のロール
- コレクション管理者
- データ ソース管理者
- データ キュレーター
- データ共有共同作成者
- データ閲覧者
- ワークフロー管理者
またPurview アカウント作成時にプライベートなネットワーク環境を選択している場合は、以下の手順を参照する必要があるようです。(今回は未検証)
Purview アカウントとの接続が確立されると、Synapse Pipeline を実行したときにLineage の情報がSynapse Analytics からPurview アカウントへ送信されるようになるのですが、そのためにはSynapase Analytics のManaged Identityが「データ キュレーター」ロールに割り当てられている必要があります。接続時の操作アカウントに「コレクション管理者」のロールが割り当てられていると自動で追加してくれますが、念のため確認しておきます。Microsoft Purview ガバナンスポータルを開き、[Data map] -> [Collections] -> [{ルートコレクション名}] -> [Role assignments] タブをクリックするとロールを確認できます。
3. Synapse Pipeline の実行
実際にPipeline のLineage 情報をPurview アカウントに送るために、一度Pipeline を実行します。実行結果画面に「系列の状態」という項目が表示され、クリックすると「成功」と表示されます。
Lineage を見てみる
さて、ここまでの手順でSynpase Pipeline で実行しているETL プロセスのデータのLineageを見ることができるようになりました。
パイプライン実行後、Microsoft Purview ガバナンスポータルで、[Data catalog] -> [Browse] -> [By source type] -> [Azure Synapase Analytics] をクリックします。
接続済みのSynpase Analytics ワークスペースが表示されるので、クリックします。
実行したPipeline の一覧とその中のData flowが表示されます。
Lineage を表示したいデータに関連するData flowをクリックして、[Lineage] をクリックします。
Lineage が表示されます。表示したいData flowの処理だけではなく、その前の処理まで表示されていることが確認できます。
さらに、データの成り立ちを確認したいデータ項目を左ペインの「Output Datasets Columns」項目から選択すると、Lineage にもそのデータ項目がそれ以前のデータセットのどのデータ項目から生成されているかが反映されます。処理をしているPipeline に遷移するナビゲーションも用意されているので、ここからより詳細の処理を確認するのも楽にできます。
まとめ
今回は「Synapse Pipeline でのLineage」をご紹介しました。少しの設定で簡単に利用できメンテナンスのストレス軽減に役立つと思います。
Lineage はPower BI(可視化レイヤー)のサービスとも接続できるので、可視化レイヤーから一気通貫で見れるようにできるかも試してみたいと思っています。またPurview はLineage 機能以外にも沢山のデータガバナンス機能があるので、それ自体も今後検証していきたいです。