[CDGC] ADLS gen2 のスキャン

# はじめに
[インフォマティカ](https://www.informatica.com/jp/)が提供する [CDGC](https://www.informatica.com/jp/products/data-governance/cloud-data-governance-and-catalog.html)(データガバナンス＆カタログ) を使って Azure Data Lake Storage Gen2(以降、ADLS gen2 とします)に関するメタデータを取得(スキャン)するためのガイドです。
※2023/08時点の情報を元にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/bcfafa10-f84d-3e2f-263d-a9bfc0e76a4d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/b756a47f-2d2b-6a59-7a5c-bce72c16b222.png)



<!-- 各チャプター -->
 
# 事前準備
CDGC がセットアップ済みであり、メタデータコマンドセンターのメニューにアクセスできるライセンス、およびユーザロール、ユーザである事を確認して下さい。詳細は [こちらのナレッジベース](https://knowledge.informatica.com/s/article/FAQ-CDGC-apps-licenses-roles?language=ja) を確認頂ければと思います。
 
# 前提
ADLS gen2 からメタデータを取得を構成する為には事前に Azure Data Lake Storage Gen2 タイプの接続を作成しておく必要があります。接続定義にはサービスプリンシパルによる認証が必要になりますので、事前に Azure AD 管理者様にサービスプリンシパルの作成と、そのサービスプリンシパルがスキャン対象の ADLSgen2 に対してアクセスできるように権限を付与しておく必要があります。詳細については Azure AD 管理者様にご相談を頂ければと思います。もし、ご自身のアカウントを利用頂いて、ご自身で設定が必要な場合、Microsoft 社の[このあたりのドキュメント](https://learn.microsoft.com/ja-jp/azure/databricks/storage/azure-storage#connect-to-azure-data-lake-storage-gen2-or-blob-storage-using-azure-credentials) が参考になるかと思います。
 
# サポート対象ファイル
現状、以下のタイプの拡張子のファイルに対してメタデータの抽出がサポートされています。

- AVRO
- CSV
- JSON
- Parquet
- Excel形式(XLS,XLSX,XLSM)

:::note info
2023 7月以降、プレビュー機能で Excel ファイルのスキャンも可能になっています。
:::
:::note warn
しかしながら、プレビュー機能は評価目的でのみサポートされており、動作保証されていません。運用環境や運用環境でのご利用に関してはサポートされない事にご注意ください。
:::

# 接続設定
下記の通り、認証タイプが複数選べる状態になっているのですが、現時点ではサービスプリンシパルのみが使用できるという[機能上の制限(KB 000196991)](https://knowledge.informatica.com/s/article/000196991?language=en_US) があります。その為、今回の設定ではサービスプリンシパルでの認証を使用しています。以下、接続例ですが、接続プロパティに関する詳細は [オンラインヘルプ](https://onlinehelp.informatica.com/IICS/prod/CDI/ja/index.htm#page/ff-cloud-connections/GUID-AACBDDF8-24E0-475F-B44C-E141B85ABE69.1.096.html) にもありますので、必要に応じて確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/5fc6bc35-aca3-985b-85cc-82d4a3258922.png)


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



# スキャン設定
本ドキュメントでは ADLSgen2 に配置されたファイル、列の情報とそのデータの傾向を示す "値の頻度" を取得する為の手順を簡単に紹介しています。なお、資料に関しては[前回](https://qiita.com/tmasudaf23/items/45add1b3b298e2aae8ea)使用したテーブルデータを CSV ファイルにエクスポートして、demo-qiita という名称のコンテナ―にフォルダ(2023/Aug)を作成、配置しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/17d84065-71b3-40f8-ad69-91431b1938c2.png)


:::note info
メタデータの抽出のみの場合、ユーザー(今回はサービスプリンシパルを使用しました)は Read 権限のみあれば問題ありませんが、値の頻度など、データのプロファイルが必要な場合、ユーザーは Read/Write/Execute の権限を持っている必要があります。詳細については、英語になってしまいますが、[How to Library](https://knowledge.informatica.com/s/article/How-To-Configure-an-Microsoft-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-data-lake-storage-gen2.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 Azure Data Lake Storage Gen2" を選択
カタログソースにリストされる一覧から "Microsoft SQL Server" を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/310f45d9-45c8-5b4f-b098-cdb7113b9b6b.png)


## 4.Microsoft Azure Data Lake Storage Gen2 への接続を設定
作成しておいた Microsoft Azure Data Lake Storage Gen2 への接続を選択し、"次へ" をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/46d848ed-2960-90cf-dbc3-e0cef3ecfe71.png)


## 5."メタデータの抽出" を設定
"メタデータの抽出" タブで以下の各項目を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/7d358e15-9614-135b-16ef-421a9267596b.png)
### 5-1.ランタイム環境
ランタイム環境から利用する Secure Agent を選択します。
### 5-2.メタデータ変更オプション
"メタデータ変更オプション" には今回も "削除" を設定しておきます。また、今回はスキャン対象のフォルダをフィルタで絞り込みます。今回の例では 2023/Aug 配下にファイルを配置していますので、一旦、このフォルダのみフィルターとして設定し、"保存" します。

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

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

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

### 5-3.メタデータフィルタ
データベースと同様にメタデータ抽出にフィルタを設定できます。設定可能な詳細は "サポートされているワイルドカードと例を非表示にする" を展開すると、フィルタ構文を確認する事が出来ますので別途確認してみてください。今回は 2023/Aug というディレクトリ配下にファイルを配置したので、これを指定してみます。

### 5-4.Use First Row as Header of Delimited Files
格納されているファイルの先頭行をヘッダーとして使うかという設定になります。近いタイミングで翻訳修正される予定ですので詳細は一旦置いておきますが、ヘッダー有のファイルでしたので、"はい" を選択しておきます。

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/15b729e9-84db-7bb3-7fa5-671e98ca8b1b.png)


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


## 8.実行スコープの設定
初回実行時、以下の様にオプションはグレーアウトしていますので、そのまま進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/f7d003da-16c1-7b45-9811-cd1266faf5a7.png)


## 9.ジョブ監視画面で結果を確認
ジョブ監視画面に自動で遷移するので、しばらく待ってステータスが完了した事を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/c3a069ef-8c25-3135-667a-f417ac32882a.png)



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



## 2.値の頻度の確認
任意の列を選択して、値の頻度を確認します。[前回](https://qiita.com/tmasudaf23/items/45add1b3b298e2aae8ea)は BLOOD 列に着目しましたが、その結果からは A 型の顧客が多いようでした(安心してください、ダミーデータですよ)。今回は PREFECTURE 列を見てみましょう。あまりメジャーではない私の地元は上位 TOP 3 に入っているようです。なんのデータかわからないので、いいのか悪いかもわかりませんが、これがビジネスデータであればデータプロファイルの結果からは何らかの傾向やインスピレーションを得られそうですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520029/6d95f64e-4c3c-5d8f-8fe5-2b5af81952c5.png)

# Tips
- プロファイリングに失敗する場合、ナレッジベース(KB)を参照し、エラーメッセージから検索を実施して下さい。
- 何らかの理由でスキャンが失敗し、該当するような事例がナレッジベースからも見つからない場合、サポート契約があればご支援が可能です。その場合、[初期情報](https://knowledge.informatica.com/s/article/HOW-TO-Collect-Cloud-Data-Governance-and-Catalog-Information?language=ja)を纏めてお問い合わせください。


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