[CDGC] Azure Synapse Analytics のスキャン

# はじめに
[インフォマティカ](https://www.informatica.com/jp/)が提供する [CDGC](https://www.informatica.com/jp/products/data-governance/cloud-data-governance-and-catalog.html)(データガバナンス＆カタログ) を使って Azure Synapse Analytics の専用 SQL プール(旧Azure SQL Data Warehouse)からメタデータを取得(スキャン)するためのガイドです。
※2024/08時点の情報を元にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/59a9f65f-92b0-e685-dac4-e01a37ee3e16.png)



<!-- 各チャプター -->
 
# 事前準備
CDGC がセットアップ済みであり、メタデータコマンドセンターのメニューにアクセスできるライセンス、およびユーザロール、ユーザである事を確認して下さい。詳細は [こちらのナレッジベース](https://knowledge.informatica.com/s/article/FAQ-CDGC-apps-licenses-roles?language=ja) を確認頂ければと思います。
 
# 前提
Azure Synapse Analytics からメタデータを取得を構成するには接続するユーザーが VIEW DEFINITION 及び CONNECT 権限を持っている必要があります。また、事前に以下の様なコマンドでロールへの追加及び権限の付与を実施しておいてください。

    EXEC sp_addrolemember 'db_datareader', '<ユーザー>';
    EXEC sp_addrolemember 'db_datawriter', '<ユーザー>';
    GRANT ALTER ANY EXTERNAL DATA SOURCE TO <ユーザー>;
    GRANT ALTER ANY EXTERNAL FILE FORMAT TO <ユーザー>;
    GRANT CONTROL TO <ユーザー>;
    GRANT CREATE TABLE TO <ユーザー>;

また、Azure Synapse Analytics のプロファイル時にはステージング用にストレージが必要になりますので、Azure Data Lake Storage gen2 もしくは Azure BLOB が必要になります。

:::note info
Azure Synapse Analytics だけでなく、Amazon Redshift や Google BigQuery など、DWH 系へのプロファイル時には内部的にクラウドストレージをステージング領域として使用します。その為、Azure Synapse Analytics 接続の場合には BLOB もしくは ADLS gen2 が、Amazon Redshift 接続には Amazon S3 が、Google BigQuery 接続には Google Cloud Storage など、各 DWH ベンダーが提供するストレージサービスへのアクセスが必要になります。
:::

# スキャン対象
Azure Synapse Analytics からは下記のメタデータを取得可能です。

- データベース
- スキーマ
- テーブル
- ビュー
- シノニム
- カラム
- マテリアライズドビュー
- ストアドプロシージャ
- ファンクション

# 接続設定
以下、Azure Synapse Analytics への接続例です。通常の JDBC URL やユーザー、パスワード、スキーマに加え、ステージングファイル用のストレージのタイプを "Azure Storage Type" から選ぶ必要があります。 "Azure Storage Type" には BLOB もしくは ADLS gen2 が選択でき、選んだストレージタイプ、認証タイプに応じた認証情報が必須項目になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/e8f18a78-87cb-355b-e126-e7a78454387f.png)


:::note warn
接続を作成する際に Secure Agent を指定する必要があります。もし、まだインストールされていない方は、[[IICS] Secure Agent のインストール手順](https://qiita.com/daichi-kaneko/items/b3a15116b35dba676b68) の記事を確認頂くか、[こちら](https://knowledge.informatica.com/s/article/HOW-To-Install-a-secure-agent-on-a-Linux-machine?language=ja) のナレッジを参考に Secure Agent をインストールしてください。
:::


# スキャン設定
英語になってしまいますが、[How to Library](https://knowledge.informatica.com/s/article/How-To-Configure-a-Microsoft-Azure-Synapse-Resource-In-CDGC?language=en_US) や、[公式のドキュメント](https://docs.informatica.com/data-governance-and-quality-cloud/metadata-command-center/current-version/catalog-source-configuration/microsoft-azure-synapse.html) もありますので、もし詳細を確認されたい場合にはこちらも参照してみてください。
本ドキュメントではデータベースに含まれるテーブルや列の情報とそのデータの傾向を示す "値の頻度" を取得する為の手順を簡単に紹介しています。

## 1.メニューから "メタデータコマンドセンター" を起動
メニューから "メタデータコマンドセンター" を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/01d63ea3-137c-2917-afcd-ba6daad328a8.png)

## 2.メタデータコマンドセンターから "新規" を選択
新しくカタログソースを設定する為、"新規"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/68591ed1-5efc-cf90-76b5-5a6ca93dfe02.png)

## 3.カタログソースから "Microsoft Azure Synapse" を選択
カタログソースにリストされる一覧から "Microsoft Azure Synapse" を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/1a4394ec-a3e0-eee5-9a70-6351a9df77df.png)



## 4.Microsoft Azure Synapse への接続を設定
Azure Synapse Analytics への接続を選択し、"次へ" をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/6eef094e-3fa5-20c8-209b-cf1bd9218878.png)

## 5."メタデータの抽出" を設定
"メタデータの抽出" タブでランタイム環境から利用する Secure Agent を選択します。必要に応じてフィルタで絞り込みを実施し、"保存" をクリックします。今回もスキーマ名だけを指定してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/6ba2c592-149a-5a48-9e5c-1abd63372e9b.png)


## 6."データプロファイリングとデータ品質" を設定
"データプロファイリングとデータ品質" タブで再度、"ランタイム環境" を選択します。また、"値の頻度" と呼ばれる実データのサマリを取得する為には "署名と値を保持" にチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/b26e404b-787d-cb07-9ece-0c9377c9f9fe.png)


加えて、ステージング用に選定したストレージサービス配下のコンテナ名をここで指定します。上記4.の接続情報が ADLS gen2 の方は "ADLS FileSystem 名" へ、BLOB の方は "Azure BLOB コンテナ" に、どちらか一方、接続情報で指定した方にコンテナ名を指定し、他方はブランクのままにします。

今回、私は ADLS gen2 に指定し、synapse-staging という名前でコンテナを作成したのでそれを "ADLS FileSystem 名" に指定し、"Azure BLOB コンテナ" はブランクのままにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/50220eb1-d0c3-cc06-b23e-111baa0a3e54.png)

## 7."実行"でスキャンを開始
他にも設定項目はありますが、今回の記事のフォーカスポイントは設定し終わったので、"実行" をクリックし、スキャンを実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/342f814b-63de-7c49-4c63-76984e7fade2.png)


## 8.実行スコープの設定
初回実行時、実行のスコープの画面で、"メタデータの抽出" はグレーアウトしていますが、2回目以降は以下の様に "保持" か "削除" を選択できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/b9081e0d-1b7c-51f9-7448-38e497e62522.png)

もし、前回スキャンした際に抽出されたテーブルが既にデータベース側にはないけども、そのテーブルをデータとしてカタログ内に残したい場合には "保持" を設定します。一方で "削除" を選択すると、カタログ内には現在データベース内に存在するオブジェクトのみがカタログ化されます。(上記 "保持" で残されていた様なテーブルはカタログから削除されます。)

## 9.ジョブ監視画面で結果を確認
ジョブ監視画面に自動で遷移するので、しばらく待ってステータスが完了した事を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/6416ae5d-b025-3ce9-8e05-43c372268374.png)


# 結果の確認
## 1.取得したアセットの一覧を表示
CDGC の画面(データガバナンスとデータカタログ)を呼出し、該当のカタログリソースが閲覧できることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/fb7ea999-3291-72d0-debc-6494e7c31591.png)



## 2.値の頻度の確認
テーブルの列を選択して、"値の頻度" からデータのパターンや分布を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/475df74d-d68e-e6fd-5f42-fa81481d649c.png)




# Tips
- プロファイリングに失敗する場合、ナレッジベース(KB)を参照し、エラーメッセージから検索を実施して下さい。


# 参考文献
- [マニュアル(ログインが必要)](https://docs.informatica.com/data-governance-and-quality-cloud/metadata-command-center/current-version/catalog-source-configuration/microsoft-azure-synapse.html)
- [ナレッジベース(KB) - How to Library(H2L)](https://knowledge.informatica.com/s/article/How-To-Configure-a-Microsoft-Azure-Synapse-Resource-In-CDGC?language=en_US)