[CDGC] Microsoft SQL Server のスキャン

# はじめに
[インフォマティカ](https://www.informatica.com/jp/)が提供する [CDGC](https://www.informatica.com/jp/products/data-governance/cloud-data-governance-and-catalog.html)(データガバナンス＆カタログ) を使って Microsoft SQL Server に関するメタデータを取得(スキャン)するためのガイドです。
※2023/08時点の情報を元にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/4fdcb14c-d6c1-1aab-0a96-0b79da5867e0.png)


<!-- 各チャプター -->
 
# 事前準備
CDGCがセットアップ済みであり、メタデータコマンドセンターのメニューにアクセスできるライセンス、およびユーザロール、ユーザである事を確認して下さい。詳細は [こちらのナレッジベース](https://knowledge.informatica.com/s/article/FAQ-CDGC-apps-licenses-roles?language=ja) を確認頂ければと思います。
 
# 前提
Microsoft SQL Server からメタデータを取得を構成する為には、下記の内部オブジェクトに対して SELECT 権限を持つユーザーを使用する必要があります。必要に応じてデータベース管理者様にご相談ください。

- sys.all_columns
- sys.all_objects
- sys.all_parameters
- sys.database_principals
- sys.databases
- sys.foreign_key_columns
- sys.indexes
- sys.index_columns
- sys.partitions
- sys.schemas
- sys.sql_modules
- sys.synonyms
- sys.types
- sys.tables
- sys.table_types
 
# スキャン対象
Microsoft SQL Server から下記のメタデータを取得可能です。

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

# 接続設定
CDGC でソースシステムからからメタデータを抽出するには前提にあるようなソース毎の要件を満たしたユーザーで接続を作成する必要があります。

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

以下、接続例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/5138b13c-5e22-4dd8-45a7-980f01aec167.png)




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

## 1.メニューから "メタデータコマンドセンター" を起動
メニューから "メタデータコマンドセンター" を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/6a86ebd0-df29-e8f1-7c8f-88cfe590d312.png)

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

## 3.カタログソースから "Microsoft SQL Server" を選択
カタログソースにリストされる一覧から "Microsoft SQL Server" を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/c00b2361-888b-7e36-2a12-aaa4426c4cfb.png)

## 4.Microsoft SQL Server への接続を設定
Microsoft SQL Server への接続を選択し、"次へ" をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/717cd30b-f2b7-a92a-09a0-50856321b688.png)

## 5."メタデータの抽出" を設定
"メタデータの抽出" タブでランタイム環境から利用する Secure Agent を選択します。必要に応じてフィルタで絞り込みを実施し、"保存" をクリックします。以下の例はスキーマ名(CUSTOM_LINEAGE)に該当するメタデータだけを抽出するように指定した例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/67849d89-7a9c-6dd7-246e-ab700a6f5a3e.png)

## 6."データプロファイリングとデータ品質" を設定
"データプロファイリングとデータ品質" タブで再度、"ランタイム環境" を選択します。また、"値の頻度" と呼ばれる実データのサマリを取得する為には "署名と値を保持" にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/231ecb00-6b81-5346-bfe0-955476fe53ca.png)

## 7."実行"でスキャンを開始
他にも設定項目はありますが、今回の記事のフォーカスポイントは設定し終わったので、"実行" をクリックし、スキャンを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/ce433707-b1f9-2610-ca8d-f31cfdca9ae1.png)

## 8.実行スコープの設定
実行のスコープの画面で、"メタデータの抽出" には今回は "削除" を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/5ce675e8-c064-c7ee-1e66-4c09f1913dca.png)

:::note warn
このチェック項目の日本語訳が正しくなく、[修正予定](https://network.informatica.com/s/ideadetail?id=0876S000000wpVNQAY)がまだ先になりますので簡単に補足しておきます。この設定は既にカタログに取り込まれたアセットがソースシステム側で削除された場合にどう処理されるかを決定します。それぞれの設定に対して以下の様な動作となります。

| オプション |動作|
|:-:|:--|
|保持|カタログソースからオブジェクトが削除されたり、フィルタ条件の変更でオブジェクトがヒットしなくなった場合でも、既にカタログ内に存在する変更前のアセットはカタログに保持されます。|
|削除|カタログソースからオブジェクトが削除された場合及びフィルタ条件の変更でオブジェクトがヒットしない場合、メタデータがカタログから削除されます。|

つまり、過去に一度でもアセットとして存在していたら残したい、という場合には"保持"を設定する必要がありますが、現在の最新のデータベース側の最新状態、フィルタ条件に応じたアセットを抽出、検索したい場合、"削除"を設定します。
:::

## 9.ジョブ監視画面で結果を確認
ジョブ監視画面に自動で遷移するので、しばらく待ってステータスが完了した事を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/a9964a3d-2f54-2c56-f72c-43cd15a90f24.png)


# 結果の確認
## 1.取得したアセットの一覧を表示
CDGC の画面(データガバナンスとデータカタログ)を呼出し、該当のカタログリソースが閲覧できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/321a158a-c610-d087-0729-be5ccc8b1fef.png)

## 2.値の頻度の確認
テーブルの列を選択して、値の頻度を確認します。この例では CUSTOMER_DETAILS テーブルの BLOOD 列の値の頻度の情報です。列に使用されているデータ、そのデータが全体に占める割合などが確認できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/181f4122-a4f5-8374-cc84-c3817e559e50.png)

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


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