データカタログを使う（データクラス 応用編）

##データクラスに記載すべき情報
[データカタログを使う（データクラス 基本編）](https://qiita.com/takayuki-yamamoto/items/924056d9b7249e0b17bb "データカタログを使う（データクラス 基本編)")では、IBM Cloud Pak for Data(CP4D)のWatson Knowledge Catalog(WKC)を使った時のデータクラスの作成方法をご紹介しました。

データクラスには、**説明**や**例**に加えて、**自動突き合わせ方式**を登録することができます。
ここでは、**自動突き合わせ方式**についてご説明します。

##自動突き合わせ方式とは
データクラスは、その列がどのような情報を保持しているのかを表現するのに使います。例えば、口座番号やクレジットカード番号などです。
そのためには、列ごとに、データクラスの割り当てが必要になってきます。この割り当ては基本的には、手動になります。
しかし、自動突き合わせ方式を利用することで、指定されたルールを基に、WKCが列とデータクラスの割り当てを自動的にやってくれます。

自動突き合わせ方式は、以下の5つの種類があります。

+ 有効な値のリストと突き合わせ
+ 参照データと突き合わせ
+ 正規表現の基準と突き合わせ
+ デプロイ済みJavaクラスの基準と突き合わせ
+ 他の一致基準
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/8edcd0eb-9352-c9ed-9279-9ca89eb3c8c1.png)

###有効な値のリストと突き合わせ
そのデータクラスが取り得る値を指定する方法です。値は複数指定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/d14641d8-3e47-30bd-8619-3c94443d1096.png)

直接、値を指定する場合は、有効な値のリストに値を入力します。複数入力する場合は、有効な値を追加を押すことで、有効な値のリストの入力欄が増えていきます。

また、事前に値のリストをテキストファイルで用意して、そのリンクを指定する方法もあります。
以下のようなテキストファイルをWebサーバー上に配置して、URLを入力します。
例）http://www.ibm.com:80/my/path/to/mydataclass.txt

ファイルには、以下のように値を記述します。

```text:dataclass.txt
Value1
Value2
...
ValueN
```

**テキストの一致基準**は、**大/小文字を区別する**、**空白文字を削除しない**、**完全一致**などの条件を指定します。デフォルトはチェックされていません。

**しきい値一致率**は、WKCが列の値をスキャンした時に、ここで指定されたデータクラスを自動で割り当てるために必要な一致率になります。デフォルトは100になっています。

###参照データと突き合わせ
WKCで、別途作成した参照データを指定する方法です。参照データの説明は、別のページでご紹介する予定ですので、ここでは割愛します。

###正規表現の基準と突き合わせ
正規表現で、目的の列がデータクラスに紐付くかどうかを判断します。**列値の一致基準**に、正規表現を記入します。また、**列値の基準と付き合わせるテスト値**として、テストの値を入れて、入力した正規表現がきちんと意図と合っているかを確認することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/5c5621b1-e8e0-3161-8c91-e4f9dc058b92.png)
**しきい値一致率**は、デフォルトは80になっています。

###デプロイ済みJavaクラスの基準と突き合わせ
データクラスを紐付けるための Java クラスを追加することができます。
現在は、WKCで定義済みの Java クラスしか使用できません。独自の Java クラスを使用することはできません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/e77eda79-957e-da89-4a0f-499189d6f2dd.png)
基本的には、製品提供のデータクラスで実装されている定義ですので、ここでは説明を割愛します。

###他の一致基準
他の一致基準は、既にご説明した他の基準と組み合わせ利用することができます。（例えば、**有効な値のリストと突き合わせ**と**他の一致基準**の２つの基準を組み合わせるなど）

他の一致基準は、列の値を評価するのではなく、列の名前やデータ型に関して評価するのに使われます。
正規表現を指定して、一致する列名を定義し、テスト用のサンプル列名を提供することができます。このあたりは、**正規表現の基準と突き合わせ**とやり方は同じですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/1c3e0ca9-efad-18ea-ad37-6fe2e2266976.png)
列のデータ型には、任意の型、ブール値、日付、または数値を複数指定することができます。また、データ値の最小長と最大長を定義することもできます。

##自動突き合わせ方式を追加する方法
[データカタログを使う（データクラス 基本編）](https://qiita.com/takayuki-yamamoto/items/924056d9b7249e0b17bb "データカタログを使う（データクラス 基本編)")で使用した、Customer Codeのデータクラスに、自動突き合わせ方式を追加してみます。
自動突き合わせ方式の右にある+を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/9bb81de2-97bf-f1c6-b516-b1428cf5d377.png)
正規表現の基準と突き合わせを選択して、次へを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/03bb4c46-7ace-19c0-0f55-bab0d6d616eb.png)
列値の一致基準に、今回の入力ルールを入力します。また、テストとしてサンプルの値を入れて、指定したルールが正しいかどうかを確認します。しきい値一致率はデフォルトのまま80にします。
次へを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/bbe93067-f538-3a70-533b-d24f204ab55c.png)
列名基準として、列の名前に、Customerが含まれいることを条件に加えます。
テスト列名を入力して、指定したルールが正しいかどうかを確認します。列データのタイプは、テキストとして、16文字以上であることを条件に加えました。最後に保存を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571926/57acc600-db84-1263-d0b4-e48b94b4d681.png)
突き合わせ方式と他の一致基準が登録されました。このままではドラフトの状態です。
そのため、最後に右上にある公開ボタンを押すことで、ユーザーが利用できる形になります。

以上で、データクラスに、自動突き合わせ方式が追加できました。