Watson Knowledge CatalogのData Quality（データ品質）機能の検証


# はじめに


Watson Knowledge Catalogでは、データ品質定義及びデータ品質ルールから成るData Quality（データ品質）機能が提供されています。Data Qualityでは、ルール式を定義し、データ資産に含まれる違反データを検出することが可能です。
これらの設定および検証結果について記載します。

__環境__
Cloud Pak for Data 4.5.0　Watson Knowledge Catalog
Db2 on Cloud

<dl>
  <dt>事前作業</dt>
  <dd>1. 分析プロジェクトを用意する</dd>
  <dd>2. データ品質ルールを適用する表を「メタデータのインポート」でインポートする</dd>
</dl>

ここでは、「Test_kgw」という分析プロジェクトを用意し、Db2のCUSTOMER_PROFILE表、CUSTOMER_DEMOGRAPHIC表をメタデータインポートしています。
CUSTOMER_PROFILE表はルール式を適用する表、CUSTOMER_DEMOGRAPHIC表は違反データを出力する表です。
![Qiita_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/703f98b0-f7e9-8c59-ffcd-eacc3d5a6ad9.jpeg)
<dl>
  <dt>Data Qualityの実行手順</dt>
  <dd>Data Qualityは下記の手順に従って実行します。</dd>
  <dd>　1. データ品質定義を作成する</dd>
  <dd>　2. データ品質ルールを作成する</dd>
  <dd>　3. データ品質ルールを実行する</dd>
</dl>

# 1. データ品質定義を作成する

最初にデータ品質定義を作成します。
ここで違反データとなる条件をルール式で定義します。

上記分析プロジェクトの「Test_kgw」→「資産」タブから「新規資産」をクリックし、「新規資産」画面で「データ品質定義」をクリックします。
![Qiita_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/d2248944-ccab-cd51-c2b3-184c23cfdbe1.jpeg)
「データ品質定義の作成」の画面で、データ品質定義の名前や説明、データ品質ディメンジョンを入力します。
ここでは「顧客プロファイルの完全性」という名前で、データ品質定義を作成します。「次へ」をクリックします。
![Qiita_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/ea8eb362-03d6-0b11-d2c4-c04c48b52fd5.jpeg)
ルール式を入力します。
ここでは以下のような式を入れています。
>IF STATE='TX' AND AGE<25 AND ID exists THEN Profile_Status='complete' and Eligible_For_Credit_Card_Promo='true'


後述するデータ品質ルールで、このルール式を満たすデータを違反データとして検出することになります。
「作成」をクリックします。
![Qiita_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/b114a334-fa57-5dc1-1a08-f2e91bd61e30.jpeg)
「顧客プロファイルの完全性」というデータ品質定義が作成されました。
![Qiita_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/06441190-2a58-d738-b514-6940c6bbfc20.jpeg)

# 2. データ品質ルールを作成する

次にデータ品質ルールを作成します。
データ品質ルールでは、先ほど作成したデータ品質定義とそれを適用する表をマッピングします。

分析プロジェクトの「Test_kgw」に戻って、「資産」タブから「新規資産」をクリックし、「新規資産」画面で「データ品質ルール」をクリックします。
![Qiita_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/7ecab411-5306-a50e-0344-7a60acc12007.jpeg)
「データ品質ルール」の画面で、データ品質ルールの名前や説明、データ品質ディメンジョンを入力します。
ここでは「プロファイルの完全性評価」という名前で、データ品質ルールを作成します。
右側の「データ品質定義」には、先ほど作成した「顧客プロファイルの完全性」を選択します。
「次へ」をクリックします。
![Qiita_7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/29cd4d61-1113-4fb4-362d-a604763bde13.jpeg)

「サンプリング＆バインディング」でルール式で定義している変数と、ルールを適用する表及び列をマッピングします。
ルール式では5つの変数（state、age、id、Profile_Status、Eligible_For_Credit_Card_Promo）を使用しているため、それぞれに対応する列を選択します。
ここでは変数ageに対して、CUSTOMER_PROFILE表のAGE列を選択しています。
![Qiita_8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/ea976ba0-ba3a-e9b3-718f-3732ab025790.jpeg)
同様の作業を残りの4つの変数に対して行います。
全てのマッピングが終わると、「サンプリング＆バインディング」の画面が表示されます。
サンプリングを行う場合は、「データ・サンプリング」右横のチェックを有効にし、サンプリング件数、サンプリング方法等を設定します。
ここでは下記画面のように設定しています。
![Qiita_9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/35d2195b-e783-81bc-e93c-3697c67a2f90.jpeg)
下にスクロールすると、先ほど設定したバインディングの情報が表示されます。ルール式や変数と列のマッピングが正しく設定されていることを確認します。
「次へ」をクリックします。
![Qiita_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/6f1647ec-a29f-bce6-af71-dc4a8b0c745a.jpeg)
「結合」の画面が表示されますが、ここでは設定しないため、「次へ」をクリックします。
![Qiita_11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/f646300e-be0e-c2d4-d70f-a105bcebc398.jpeg)
「出力」画面で、違反データの出力設定を行います。
「出力ロケーション」に、CUSTOMER_DEMOGRAPHIC表を指定します。ここでは、ルール式に合致するデータを違反データとして検出したいため、「出力レコード」では「ルールの条件を満たすレコード」を選択します。
![Qiita_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/0a94ac48-51e9-ee95-a698-326e834488b0.jpeg)
下にスクロールし、「例外出力レコードの最大数」及び「更新メソッド」を以下のように設定します。
![Qiita_13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/17ccabb2-e190-e4fa-a1bb-f8480d79df72.jpeg)
さらにスクロールすると、「出力内容」の設定画面が表示されます。
右上の「出力内容を追加する」から「統計と属性」を選択します。
![Qiita_14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/2728f58f-c63c-474b-ab7e-91985a548738.jpeg)
CUSTOMER_DEMOGRAPHIC表に出力する内容（列）を選択します。
ここではRecort ID、Rule name、Rule met or not metを選択し、「追加」をクリックします。
![Qiita_15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/3439b893-3212-4cbe-69ff-5b804d875fac.jpeg)
「出力内容」が設定されていることを確認し、「次へ」をクリックします。
![Qiita_16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/8f4206dd-6b9f-c5fa-9dcd-6824c672507f.jpeg)
「レビュー」画面で、データ品質ルールの設定内容のサマリーを確認します。
「作成」をクリックします。
![Qiita_17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/7322d8c0-d49a-736a-b4e4-eb17e3a9ba68.jpeg)
データ品質ルールが作成されました。
![Qiita_18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/e7a5916f-901c-759f-6683-58d901a07916.jpeg)

# 3. データ品質ルールを実行する

先ほど作成したデータ品質ルールを実行してみましょう。
右上の「ルールを実行します。」をクリックします。
ルール実行が開始されたというメッセージが上部に表示されます。
![Qiita_19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/b07f91f3-cf83-9a00-0a2d-89731d61348a.jpeg)
「実行履歴」タブを開くと、ルールの実行状況を確認できます。
状況が「完了」になったら、「出力表を表示します。」をクリックします。
![Qiita_20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/15f075aa-e90b-8710-f29f-bac2c22c0905.jpeg)
「ルール プロファイルの完全性評価 の出力」が表示されます。
ルール式に合致した違反データが14件検出されたことが分かります。
![Qiita_21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482216/ac41a64d-f51c-8b20-1b3e-3836d5400664.jpeg)

# おわりに

Watson Knowledge Catalogが提供しているData Quality機能では、データ品質定義とデータ品質ルールという2つの設定が必要であり、データ品質ルールでデータ品質定義及びルールを適用する表をマッピングすることで、違反データの検出が実行できることが分かりました。
データ品質定義が分離されていることにより、複数のデータ資産や異なるデータソースに対して同一のルール式を適用できるため、効率的に違反データの検出ができます。
なお、当記事では紹介していませんが、ルール式をブロックを組み合わせることで作成できるGUIや（4.5.2以降）、データ品質ルールのテスト機能（4.5.3以降）等も提供されており、今後のバージョンにおいても機能が拡充されていくと思われます。

__参考情報__
https://www.ibm.com/docs/en/cloud-paks/cp-data/4.5.x?topic=data-managing-quality

https://www.ibm.com/docs/en/cloud-paks/cp-data/4.5.x?topic=data-managing-quality