インフォマティカのCloud Data Profilingでデータプロファイリングしてみた

インフォマティカのIntelligent Data Management Cloud（以下、IDMCと書きます）には、データマネジメントに必要な機能が揃っています。この記事では、その中でもCloud Data Profilingを取り上げます。
Cloud Data Profilingは、その名前の通りデータをプロファイリングする機能です。どのようにデータをプロファイリングできるのかをざっと見てみましょう。

# データプロファイリングの大まかな流れ

Cloud Data Profilingでデータプロファイリングを実行するときは以下のよう流れになります。

1. プロファイリング定義（定義の名前や、どんなデータをプロファイリングするか等）を作成する
2. プロファイリングを実行する
3. プロファイリング結果を確認する
4. さらにデータを細かく確認する必要がある場合、プロファイリング定義を変更する
5. 2～4を繰り返す

実際には一度プロファイリングして終わりとなることはほとんどなくて、何度もプロファイリングをしながらデータ品質上の問題を見つけていくことになると思います。

なお、この記事では1～3について以下で説明します。

# プロファイリングの定義

プロファイリングをするためには最初に定義を作成する必要があります。以下、手順です。

IDMCにログインし、マイサービスで「データプロファイリング」をクリックします。
![myservice.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/5cf81fd7-8856-2ede-00fa-6acf8bb9ab3c.png)

左側のメニューで「新規...」をクリックします。
![new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/ee605ddc-b3d0-a248-30de-969da785b245.png) 

「データプロファイリングタスク」をクリックします。
![new02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/e5236cff-cf1d-8755-b7a6-84afd283c71e.png)

「アセットの詳細」では、定義するプロファイリングの名前や保存先を設定します。
![asset_details.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/f7e54228-c862-7d1a-1077-d618c9d4ea00.png)

「ソースの詳細」では、プロファイリングするデータについて設定します。
この記事では、テスト用に作成したCSVファイルを使用しています。
![source_details.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/3ee57906-b935-bc46-f351-ca814cd84bc3.png)

ソースオブジェクトがファイルの場合、「形式オプション」というボタンが表示され、ファイルの形式を設定できます。ローカルのフラットファイルの場合は以下のような設定が可能です。
![formatting_options.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/5ab6a152-8dc7-8024-fbe3-2fc38a592174.png)

「プロファイル設定」では、データをサンプリングしてプロファイルするか、また、プロファイリング結果をドリルダウンするかを設定します。
フラットファイルの場合、サンプリングはできません。下図はフラットファイルを指定したときの画面なので「すべての行」しか選択できないようになっています。
次に、ドリルダウンですが、プロファイリング結果を確認するときによく使うので特に理由がなければ選択しておきましょう。ドリルダウンが何なのかは記事の後半で書きます。
![profile_settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/be7183b5-fbab-8900-f350-fea06450fe43.png)

最後にプロファイリングするカラムを選択します。全てカラムをプロファイリングしたいので、下図では全てのカラムにチェックを入れています。
![column.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/22af60e4-f9eb-8f0c-d4fa-a287fd4b8cb2.png)

定義はこれで終了です。もちろん、もっと細かい設定項目はあるのですが、これだけでもプロファイリングは実行可能です。

定義作成が終了したら、画面上部にある「保存」ボタンをクリックして定義を保存します。
その後、「実行」ボタンをクリックするとプロファイリングが開始されます。
![save_and_run.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/0ed9149c-558c-172f-096d-f0a1af91ddea.png)

# プロファイリング結果の確認

データ量にもよりますが、プロファイリングの実行には少し時間がかかるので終了するまで待ちましょう。実行状況は「マイジョブ」で確認できます。
![myjob.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/e4aab5ba-dd45-bf1e-628b-9d21f9eb8dda.png)


「マイジョブ」で処理が終了したことを確認したら、先ほど定義したプロファイリングをクリックして再び開きます。
![select_profiling.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/12143ec6-52cb-cf28-a7a3-a08ff18353e2.png)

プロファイリング定義が表示されると、以下のような表示がありますので、「Click here to update」をクリックします。
![update.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/3b758dee-de8f-346f-80bb-bdd320d4bff5.png)

すると、プロファイリング結果が表示されます。
![result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/03946fb0-986e-1b70-3d63-bf822c7724c7.png)

:::note warn
今回プロファイリングしたのはテスト用に作成した疑似顧客データです。人名や電話番号は全て架空のものです。
:::

画面いっぱいにグラフや表が表示されていますが、順番に確認していきます。

## サマリビュー
画面左上がサマリビューです。横に長い表なので、右端まで見るためにはスクロールさせてください。
![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/2d5f44bc-56c9-1b54-496d-ef460caba07c.png)

ここには以下の項目が表示されています。
- カラム
- 値の分布
- NULLの行のパーセンテージ
- NULLの行の数
- 個別の行のパーセンテージ
- 個別の行の数
- 重複のある行のパーセンテージ
- 重複のある行の数
- パターンの数
- 上位のパターンのパーセンテージ
- 最小長
- 最大長
- 最小値
- 最大値
- 空白の行の数
- 空白の行のパーセンテージ

「個別の行」というのがわかりにくいですが、これは値が重複していない行のことです。
NULL、個別の行、重複のある行の割合をグラフにしたのが「値の分布」のグラフです。NULLは赤、個別の行は緑、重複のある行は黒で表現されています。

また、サマリビューでカラム名をクリックすると、そのカラムのヒストグラムが表示されます。
![histogram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/1c95d988-7466-96e2-6a7b-a2edf2b5ecc5.png)

## 詳細とルール

画面右上が詳細とルールです。
![column_details.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/6630597d-a453-2724-9e35-5022f3acf160.png)

「トレンド」は、何回かプロファイリングをしないと意味のある表示とはならないのですが、NULLの行、個別の行、重複の行の割合の変化を示しています。
「データ型」は推測されたデータ型です。「文書化されたデータ型」という行がありますが、これはDBなどであれば実際に定義されているデータ型が表示されます。今回はCSVファイルだったので、nstring(255)となっています。
「パターン」は、出現するデータのパターンの割合です。9は数字、Xは文字の意味で、`9(4)`は数字4桁のことです。数字も文字も3桁までは`999`や`XXX`と表示されますが、4桁以上は桁数がカッコ内に書かれます。
「もっとも頻度の高い値」は言葉の通りです。
なお、上の図にはありませんが、カラムが数値型の場合は、このビューに平均、合計、標準偏差なども表示されます。

※今回はルールを使用していないので、ルールについては割愛します。

## データプレビュー

画面下がデータプレビューです。ここには実際のデータが最大10行表示されます。
![preview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/eaa63093-b5d8-dc06-8503-a18033b22b65.png)

### ドリルダウン

先ほど、カラムのヒストグラムを表示したときに各値の左端にチェックボックスがついていたのにお気づきでしょうか？また、詳細とルールでも、データ型とパターンには左端にチェックボックスがありました。
![drilldown01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/38053989-b6a5-0697-4536-cbad528e1360.png)
このチェックボックスはドリルダウンのときに使用します。チェックボックスにチェックを入れると、データプレビューに「適用」ボタンが表示されます。この「適用」ボタンをクリックすると、チェックを入れた条件に合致する行がデータプレビューに表示されます（これをドリルダウンと言います）。
![drilldown02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/847237d3-719b-ff6e-0e03-af7760cc7794.png)

## インサイト

「インサイト」タブを開くと、AIが品質上の問題と検出した内容が表示されます。ここに出力された内容に対応するだけで品質の問題が全て解消されるわけではありませんが、参考として見ておくと良いと思います。
![insight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/e0eb0ef2-2728-ac34-0520-ab1a58d9de78.png)

## Excelファイルへエクスポート

画面右上のメニューアイコンをクリックして、「プロファイル結果のエクスポート」をクリックするとExcelファイルにエクスポートすることができます。
![export01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/cd051495-6107-5a64-3027-fe169aeeb1fa.png)

エクスポートしたファイルを開くといくつかのシートに分かれてプロファイリング結果が出力されています。
![export02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025212/7f5c35d2-62e6-736d-42a8-db7018f99b60.png)

# まとめ

データプロファイリングをやってみました。画面の指示に従って入力していっただけですが、ちゃんとデータを調べてくれていました。SQLやPythonのコードを書くのではなくGUIでできるのは便利ですね。Cloud Data Profilingを使うと今までよりも楽にデータプロファイリングができそうです。

（2023/03/03 追記）
続編を書きました。

https://qiita.com/tsuru_/items/ed4e349ebee56b9ae08c

# 仲間募集中！

[NTTデータ Data&Intelligence事業部](https://enterprise-aiiot.nttdata.com/) では、以下の職種を募集しています。

<details>
<summary>1. 「クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)」の募集</summary>
クラウド/プラットフォーム技術の知見に基づき、ITアーキテクトまたはPMとして、DWH、BI、ETL領域における、ソリューション開発の推進や、コンサルティング工程のシステムグランドデザイン策定時におけるアーキテクト観点からの検討を行う人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=808
</details>

<details>
<summary>2. AI／データ活用を実践する「クラウド・ソリューションアーキテクト」</summary>
AI／データ活用を実践する「クラウド・ソリューションアーキテクト」として、クラウド先進テクノロジーを積極活用し、お客様のビジネス価値創出活動を実践。AI／データ活用の基本構想立案コンサルティングからクラウドプラットフォーム提供・活用を支援しています。お客様のAI・データ活用を支援するクラウド・ソリューション提案、アーキテクチャ設計・構築・継続活用支援（フルマネージドサービス提供）、および最新クラウドサービスに関する調査・検証で、クラウド分析基盤ソリューションのメニュー拡充を実施する人材を募集します。

https://nttdata.jposting.net/u/job.phtml?job_code=807
</details>

また、取り扱う主なソリューションについては、以下のページも参照ください。

# ソリューション紹介

<details>
<summary>1. NTTデータとInformaticaについて</summary>
データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。

https://enterprise-aiiot.nttdata.com/service/informatica
</details>

<details>
<summary>2. Trusted Data Foundationについて</summary>
～データ資産を分析活用するための環境をオールインワンで提供するソリューション～

https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。
</details>