IICS Cloud Data Profilingをもっと使ってみる
こんにちは。データアナリティクス事業本部の松村です。
本エントリはクラスメソッド インフォマティカ Advent Calendar 2020のエントリです。
- クラスメソッド インフォマティカ Advent Calendar 2020 - Qiita
- クラスメソッド インフォマティカ Advent Calendar 2020 | 特集カテゴリー | Developers.IO
先日の以下のエントリに引き続き、Informatica Intelligent Cloud Services(以降IICS)のCloud Data Profilingのいろいろな機能を使ってみます。
IICS Cloud Data Profilingを使ってみる
時系列でのデータプロファイリング
多くのデータはその内容が日々変わっていくものです。それに合わせてデータプロファイリングも定期的に実行する必要がありますが、Cloud Data Profilingでは同じデータソースに対するデータプロファイリングの実行結果は履歴として蓄積され、特定の時点におけるプロファイル結果をいつでも呼び出すことができます。また、任意の2時点間の結果比較を行うこともできます。
この動きを見るために、前回と同じくOracleサンプルデータベースのCUSTOMER
テーブルを5回スキャンしました。1回ごとにデータが増えていくことを表現するために、抽出条件としてCUST_YEAR_OF_BIRTH
(生年)を設定したビューを作成し、その条件を変えながらスキャンしました。
- 1回目:1940年まで
- 2回目:1950年まで
- 3回目:1960年まで
- 4回目:1970年まで
- 5回目:条件なし(全件数)
過去のプロファイル結果の表示
5回実行したプロファイルを開いてみました。初期状態ではこのように最後に実行したときのデータが表示されています。画面上部のスキャン件数(55,000件)に着目してください。
過去のプロファイル結果を見るには、画面右上の三点リーダーアイコンをクリックし、プルダウンメニューから『[プロファイルの実行]を選択します』を選択します。
すると履歴が表示されますので、任意の時点を選択して『選択』をクリックします。
このように選択した時点のプロファイル結果が表示されました。画面上部のスキャン件数は7,022件と表示されています。
画面右上ペインの『トレンド』を見ると(これはCUST_FIRST_NAME
のものです)、NULL値、ユニーク値、重複のある値のそれぞれについて、直近の5回のプロファイル結果における割合の変化が折れ線グラフで表示されています。オレンジ色の点が現在表示されている時点のものです。
2時点におけるプロファイル結果の比較
2時点間のプロファイル結果を比較することもできます。三点リーダーアイコンをクリックし、プルダウンメニューから『プロファイル実行の比較』を選択します。
任意の2時点をチェックして、『比較』をクリックします。
このように、後の時点のデータ属性が、以前と比べてどのぐらい変化(増減)したかを一覧表示することができます。
カラム値でフィルタしてデータプロファイリング
データプロファイリング実行の際に、スキャン対象のデータをカラム値でフィルタすることができます。CUST_GENDER
(性別)でやってみます。
データプロファイリングタスクの作成および編集時に、対象カラムを選択するペインがありますが、そこで『フィルタ』タブに切り替えます。そこの検索ボックスの左隣にフィルタ追加のアイコンがありますので、それをクリックします。
まずは男性(CUST_GENDER
がM
)のみ抽出するフィルタを作成します。
もうひとつ、今度は女性(CUST_GENDER
がF
)のみ抽出するフィルタを作成します。
フィルタが追加されました。ここで一旦保存します。
フィルタを適用してプロファイリングを実行するには、『プロファイルで使用』をチェックし、フィルタを選択してから『実行』をクリックします。
今回は両方とも実行しました。
履歴からプロファイル結果を選択する画面では、このようにそれぞれで適用したフィルタの名前と抽出された行数が表示されます。わかりやすいですね。
異なるフィルタを適用したプロファイル結果の比較もしてみます。
こちらが比較結果ですが、基準が片方のプロファイル結果に対する絶対数の増減になっているため、そもそも今回のように母集団の件数に大差があると(男性37,175件に対し女性18,325件)、視覚的に傾向の違いを把握するという用途には向かなそうです。結果比較は時系列データに適用するのが良さそうです。
ただ、視覚的に比較するのに向かないというだけで、各属性ごとのプロファイル結果を個別に参照して分析するにはフィルタは有用だと思います。
ルールの適用
データプロファイリングを実行するときに、ルールというものを適用することができます。これは本来Cloud Data Qualityという、データのクレンジングなどを行うIICSの別サービスのアセット(IICSではユーザが作成したモジュールをこう呼びます)ですが、Cloud Data Profilingでも流用することができます。
ルールを適用することで、データが想定した書式や範囲に従っているかチェックしたり、元のデータを改変することなくクレンジング結果に対するデータプロファイリングを行ったりすることができます。
サンプルルールのダウンロード
ルールを自分で1から作るのは結構大変なので、サンプルとして公開されているものを使うことにします。
CDM Foldersコネクタ(CDMはMicrosoft Common Data Modelの略称です)というものを使えばデータプロファイリング時にデータの内容から自動的にこれらのルールを適用することもできるようなのですが、今回はOracleですので、ダウンロードだけしてルールの適用は手作業でやることにします。
サンプルルールのダウンロードは、管理者メニューの『アドオンバンドル』から行います。『使用可能なバンドル』タブの一覧の中から『Cloud Data Quality Automation Bundle』を探し出してクリックします。quality
などで検索するとすぐ見つかると思います。
右上の『バンドルの内容を次の場所にコピー』をクリックします。
どこのプロジェクト/フォルダに保存するか聞かれるので、選択して『選択』をクリックします。今回は対象外ですが、ルールを自動的に適用するためにはCDM
というプロジェクト配下にダウンロードする必要があるとのことなので、それに従います。
このようなメッセージが表示されますが、数分待っても特に通知らしきものは出てきませんでした。
データプロファイリングサービスの画面に戻って、ダウンロード先のCDM
プロジェクトを開いてみたところ、正常にダウンロードが完了しているようでした。アセットの数も『Cloud Data Quality Automation Bundle』の詳細画面に表示されていた44と同じです。
ルールの追加(ルール仕様)
ダウンロードしたルールをデータプロファイリングタスクに追加します。
データプロファイリングタスクの作成および編集時に、ルールタブを開き追加アイコンをクリックします。
適用するルールを選択して『選択』をクリックします。データにメールアドレスを使っている項目があったので、まずはValidate_EmailAddress
を選んでみます。
ルール適用対象のカラムを選択して、『OK』をクリックします。電子メールがセットされているのはCUST_EMAIL
なので、これを選びます。
同じ手順でいくつかルールを追加します。今回は、最終的に次の画面のように4つのルールを適用しました。これで保存します。
このまま実行したいところですが、ここまでで追加したのは、カラムの値が特定のルールに収まっているかどうかを検出するものだけです。データのクレンジングもやってみたいのですが、サンプルに含まれていませんので、この次の手順で簡単なものを作ってみます。
ルールの追加(クレンジング)
前回のエントリで実行したデータプロファイリングの結果をよく見てみると、CUST_MARITAL_STATUS
(婚姻状況)にmarried
とMarried
という2種類の値が混在していることがわかります。これは同一視したいですよね。
というわけで、アルファベットを大文字に変換するクレンジングアセットを作って、それをCUST_MARITAL_STATUS
に適用した上でデータプロファイリングを実行したいと思います。
先ほども少し書きましたが、クレンジングは本来はCloud Data Qualityの機能になります。そのため、まずはマイサービスから『データ品質』をクリックして画面を切り替えます。
メニューから『新規』を選択します。
『クレンジング』をクリックします。
適当な名前を入力して『設定』タブを選択します。
『ステップシーケンス』の追加アイコンをクリックします。
『大文字小文字変換』を選択して『OK』をクリックします。
『ステップのプロパティ』で『大文字』を選択して『保存』をクリックします。これで大文字に変換するクレンジングアセットができました。
データプロファイリングのルールにクレンジングを追加するために、Cloud Data Profilingの画面に切り替えます。
そうしたら先ほど保存しておいたデータプロファイリングタスクを開き、ルール仕様を追加したのと同じ手順でクレンジングを追加していきます。
ルールの追加画面では、先ほど作成したクレンジングアセットを選択して『選択』をクリックします。
適用対象としてCUST_MARITAL_STATUS
を選択して『OK』をクリックします。
ルールにクレンジングが加わりました。保存して実行します。
結果の確認
では、ルールを適用したプロファイル結果がどのようになったかを確認します。
まずはクレンジングを施したCUST_MARITAL_STATUS
から見ていきます。ルールが適用されたことを表すアイコンが付いていますね。
えーと...、married
とMarried
が混在したままです。これはルールを適用したとしても、そのカラムはオリジナルの値で通常通りデータプロファイリングを行い、ルール適用後の結果は別に表示するようになっているためです。確かにオリジナルの値を確認したいこともあると思いますので、この方が良いですね。
というわけでクレンジングした後のCUST_MARITAL_STATUS
を見てみます。ルール適用後の結果は下の方にまとめて表示されます。
こちらはMARRIED
に一本化されていますね。割合の29.35%というのも、married
25.68%とMarried
3.66%の合計と丸め誤差の範囲で一致しています。
ルール仕様を適用した結果も見てみます。
まずはCUST_EMAIL
から。Valid
が100%、つまりすべての値がルール仕様で定められたメールアドレスの形式に一致しています。
CUST_FIRST_NAME
も見てみます。こちらはInvalid
、つまりルール仕様に従っていないものが6.26%ありました。人名のルールはパターンで定義されているわけではなく、よくある名前を予めリストアップしてそれらとの一致を確認しているので、なかなか100% Validにはなりません。
画像は省略しますが、CUST_FIRST_NAME
は88.72% Valid、CUST_MAIN_PHONE_NUMBER
は100% Validでした。
最後に
Cloud Data Profilingの応用的な機能をご紹介しました。ルールの適用はなかなか便利でしたね。今回は非常に初歩的なルールだけを使いましたが。もっと複雑なビジネスルールを表現したルールを作ることもできますので、使いこなせば細かい分析にも役立てることができるのではないかと思います。