Microsoft Purview のビジネスメタデータをSnowflake Cortex Analyst のセマンティックモデルに連携する
はじめに
前回の記事で Power BI 上のビジネスメタデータを Snowflake Cortex Analyst のセマンティックモデルに連携する例をご紹介しました。
ビジネスメタデータの在りかとしては BI ツールの他にデータカタログもあるかと思います。そこで本記事では Microsoft Purview 上にあるビジネスメタデータを Snowflake Cortex Analyst のセマンティックモデルに連携するやり方を試してみました。
環境構成
検証で使用した構成は以下の通りです。
- Snowflake
- Microsoft Purview
- クライアント PC
各環境の構成や利用ツールについて詳細を記していきます。
Snowflake
Cortex Analyst が利用可能な AWS Tokyo リージョンを選択。検証データとして前回同様 Microsoft のサンプル DB である AdventureWorks データベースを使用し、DB 内の Sales テーブルを参照できるようなセマンティックモデルの YAML ファイルを作成・ステージに配置します。
Microsoft Purview
Purview アカウント作成後に Snowflake 環境をスキャンし、統一カタログ上で AdventureWorks データベースの Sales テーブルのメタデータを参照可能にします。
クライアント PC
前回同様 Windows11 PC に VSCode と GitHub Copilot Business を構成し AI エージェントとして動作させます。Snowflake とは snowsql、Purview とは Microsoft Purview CLI を使ってそれぞれやり取りを行います。
Microsoft Purview CLI は Azure の REST API をベースにしたユーティリティツールで、Azure CLI ではできないような Purview データカタログへの詳細な情報取得や操作が可能になっています。
事前準備
各環境に対してそれぞれ以下のセットアップを行っていきますが、いずれも一般的な手順でできますので詳細な手順の記載は割愛します。公式のドキュメント等をご参照ください。
- Snowflake 上の DB、テーブル、セマンティックモデル作成
- Microsoft Purview アカウント作成、スキャン実行
- GitHub Copilot へのサインイン
- snowsql インストール
- Microsoft Purview CLI インストール
Purview アカウントのある Azure サブスクリプションへ事前にログインしておくことで、後の検証を実施しやすくしておきます。az login 実行後、ポップアップが表示されますのでアクセス権を持ったアカウントでログインしておきます。


検証
ここからいよいよビジネスメタデータ連携を試してみます。
ビジネスメタデータ取得
Purview 上で Sales テーブルの説明を記述しています。

この情報が取得できるか以下のようなプロンプトで問い合わせてみます。

情報が適切に取得できていることが確認できました。

セマンティックモデルのファイル修正
先ほどの Sales テーブルの説明をセマンティックモデルにどう反映させるかを GitHub Copilot に考えてもらいます。

テーブルの description プロパティに追記する案を提示してくれました。問題なさそうですので、このまま受け入れるようにします。

Snowflake への反映
ローカルで修正した YAML ファイルを Snowflake のステージに再度アップします。ステージへのアップは前回同様 snowsql での PUT ステートメントにより実行します。

PUT ステートメント実行後、Snoflake 上でセマンティックモデルの更新が確認できれば OK です。


まとめ
前回の Power BI に続き、今回は Purview 上のビジネスメタデータをセマンティックモデルに連携する例をご紹介しました。2 つの検証を通してサービス間でのビジネスメタデータの連携イメージがより具体的に湧いてきたため、今後も Tableau や OpenMetadata といった他のツールを組み合わせた連携を試してみたいと思います。
ちなみに、Purview の CLI 操作は各オブジェクトの GUID を特定した後にその GUID を引数として各種処理を行わせるというのが基本的な流れとなるのですが、今回の検証ではそのあたりを LLM(GitHub Copilot)に任せることで上手く省力化が図れた印象があります。
Discussion