# Simple VSRアルゴリズム

このシナリオでは、Jaro-Winklerマッチングメソッドを*lname*カラムと*fname*カラムに使用し、q-gramsマッチングメソッドを*address1*カラムに使用して、入力ファイル内のカラムを比較する基本的なジョブについて説明します。次に、出力レコードを次の出力フローにグルーピングします。

* [Uniques] (一意): グループサイズ(レコードで計算された最小距離)が*1*に等しいレコードをリスト表示します。

* [Matches] (マッチング): グループスコア(レコードで計算された最小距離)が[Confident match threshold] (信頼できるマッチングしきい値)フィールドで定義したしきい値と同等かそれ以上のレコードをリスト表示します。

* [Suspects] (サスペクト): グループスコア(レコードで計算された最小距離)が[Confident threshold] (信頼しきい値)フィールドで定義したしきい値よりも低いレコードをリスト表示します。

このシナリオは、Talend Data Management Platform、Talend Big Data Platform、Talend Real-Time Big Data Platform、Talend Data Services Platform、Talend Data Fabricにのみ適用されます。

情報メモ注: このシナリオは標準コンポーネントで作成されていますが、Apache Spark Batchコンポーネントを使用することもできます。

## ジョブを設定

### 手順

1. tFileInputExcelコンポーネント、tMatchGroupコンポーネント、および3つのtLogRowコンポーネントを[Palette] (パレット)からデザインワークスペースにドロップします。
2. [Main] (メイン)リンクを使用してtFileInputExcelをtMatchGroupに接続します。

   情報メモヒント: Spark Batchフレームワークで作業している場合は、tFileInputExcelをtFileInputDelimitedに置き換えます。
3. tMatchGroupコンポーネントをクリックして、[Advanced settings] (詳細設定)ビューで[Separate output] (出力を分割する)チェックボックスをオンにします。
4. [Uniques] (ユニーク)、[Matches] (マッチング)、および[Suspects] (サスペクト)リンクを使って、tMatchGroupを3つのtLogRowコンポーネントに接続します。

   ![tFileInputExcelコンポーネント、tMatchGroupコンポーネント、tLogRowコンポーネントを使ったジョブ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup.png)

## 入力コンポーネントを設定

### このタスクについて

メイン入力ファイルには、次の8つのカラムが含まれています: *account\_num*、*lname*、*fname*、*mi*、*address1*、*city*、*state\_province*、*postal\_code*。この入力ファイル内のデータには、重複、名前のスペルの相違や間違い、同一顧客に異なる情報など、問題があります。![入力データのサンプル。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup_input.png)

Data Qualityデモプロジェクト、TDQEEDEMOJAVAに含まれている*c0*ジョブと*c1*ジョブを実行すれば、このシナリオに使用されている入力ファイルを作成できます。このデモプロジェクトは、*Talend Studio*のログインウィンドウからインポートできます。詳細は、[デモプロジェクトを別のプロジェクトとしてインポート](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/importing-demo-project-to-be-separate-project)をご覧ください。

### 手順

1. tFileInputExcelの[Basic settings] (基本設定)ビューで、入力ファイルに移動して[File Name] (ファイル名)フィールドに入力し、[Repository] (リポジトリー)に保存されていない場合は、その他のプロパティを設定するために使われます。

   ![tFileInputExcelコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup2.png)
2. スキーマが[Repository] (リポジトリー)にまだ保存されていない場合は、[Edit Schema] (スキーマを編集)ボタンを使用してスキーマを作成します。[Type] (タイプ)カラムでデータ型を必ず設定してください。

   ![tFileInputExcelコンポーネントのスキーマ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup1.png)

## tMatchGroupコンポーネントを設定する

### 手順

1. tMatchGroupをダブルクリックして[Basic settings] (基本設定)ビューを表示し、コンポーネントプロパティを定義します。
2. [Matching Algorithm] (マッチングアルゴリズム)リストで[Simple VSR] (単純VSR)を選択します。

   このシナリオでは、マッチングルールはVSRアルゴリズムに基づいています。
3. [Sync columns] (カラムを同期)をクリックして、先行のコンポーネントからスキーマを取得します。
4. [Edit schema] (スキーマを編集)ボタンをクリックして入力および出力スキーマを表示し、必要に応じて出力スキーマに変更を施します。

   ![入力スキーマと出力スキーマの例。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup4.png)

   このコンポーネントの出力スキーマには、読み取り専用の出力標準カラムが少数含まれています。詳細は、[tMatchGroupの標準プロパティ](https://help.qlik.com/talend/en-US/data-matching/8.0/tmatchgroup-standard-properties)をご覧ください。
5. OKをクリックしてダイアログボックスを閉じます。
6. [Configure match rules] (マッチングルールの設定)の横にある[...]ボタンをクリックして設定ウィザードを開き、コンポーネントの設定とマッチングルールを定義します。

   ![tMatchGroupコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/match_studio.png)

   設定ウィザードを使用して、Talend Studioで作成およびテストし、リポジトリーに保存したマッチングルールをインポートし、マッチングジョブで使用できます。詳細は、[リポジトリーからマッチングルールをインポート](https://help.qlik.com/talend/en-US/data-matching/8.0/importing-match-rules-from-studio-repository)をご覧ください。

   コンポーネントの基本設定で選択されているのと同じタイプのルールをインポートまたは定義することが重要です。そうでない場合、ジョブは2つのアルゴリズム間で互換性のないパラメーターのデフォルト値で実行されます。
7. 最初のマッチングルールを次のように定義します。
   * [Key definition] (キー定義)テーブルで[+]ボタンをクリックし、マッチングオペレーションを行うカラム(このシナリオでは*lname*と*fname*)をリストに追加します。

     情報メモ注: 日付カラムにアルゴリズムやマッチングアルゴリズムを適用すると、日付形式で比較する内容を決定できます。

     たとえば、日付の年のみを比較する場合は、コンポーネントスキーマで日付カラムのタイプを[Date]に設定し、[Date Pattern] (日付パターン)フィールドに*yyyy*と入力します。コンポーネントでは、スキーマで定義されたパターンに基づき、日付形式を文字列に変換してから文字列比較が開始されます。

   * [Matching Function] (マッチングファンクション)カラムをクリックし、マッチングオペレーションに使用する方法としてJaro-Winklerをリストから選択します。

     マッチングタイプとして[custom] (カスタム)を選択する場合は、[Custom Matcher] (カスタムマッチャー)カラム内に使用する必要のあるカスタムクラス(外部マッチングアルゴリズム)をポイントするパスを設定する必要があります。このパスは、ライブラリーファイル(*.jar*ファイル)で自身で定義します。

   * [Tokenized measure] (トークン化された測定)リストで、選択したアルゴリズムにトークン化された距離を使用しないように指定します。

   * [Weight] (加重)カラムのセルをクリックし、キー属性として使用する2つのカラムに数値の重みを設定するために使われます。

   * [Handle Null] (Nullを処理)カラムのセルをクリックし、カラム内のNull属性の処理に使用するnullオペレーターを選択します。このサンプルでは、一致結果にnull値の影響が最小となるように、[Null Match None] (Nullのマッチングなし)を選択します。

   * [Match Interval] (マッチング間隔)フィールドでマッチ率を設定するために使われます。
8. 上記の手順を繰り返して、2番目のマッチングルールを定義します。

   *address1*カラムを入力属性に設定し、マッチングタイプとしてJaroを選択します。nullオペレーターに[Null Match None] (Nullのマッチングなし)を選択します。最後にマッチ率を設定するために使われます。これは最初のルールに設定したものと異なっていて構いません。
9. 結果チャートとマッチングテーブルにどのグループを表示するかを決めるために 、[Hide groups of less than] (未満でグループを非表示)パラメーターを設定するために使われます。このパラメーターにより、サイズの小さいグループを非表示にすることもできます。
10. [Advanced settings] (詳細設定)タブをクリックし、tMatchGroupコンポーネントに詳細パラメーターを次のように設定します。

    ![tMatchGroupコンポーネントの詳細設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup5.png)
    * [Separate output] (別の出力)チェックボックスをオンにします。

      コンポーネントに次の3つの別々の出力フローが含まれます: [Unique rows] (ユニークな行)、[Confident groups] (信頼できるグループ)、および[Uncertain groups] (不確実なグループ)。

      このチェックボックスをオンにしていないと、tMatchGroupコンポーネントに含まれる出力フローは1つだけとなり、そこにすべての出力データがまとめられます。シナリオサンプルは、Identificationのセクションで*同じ機能キーを持つ出力フロー重複レコード内でカラムを比較し、グルーピングする*をご覧ください。

    * [Sort the output data by GID] (出力データをGIDでソート)チェックボックスをオンにして、出力データをそのグループ識別子でソートします。

    * [Output distance details] (距離の詳細)チェックボックスと[Display detailed labels] (詳細ラベルの表示)チェックボックスをオンにします。

      コンポーネントは、*MATCHING\_DISTANCES*カラムを出力します。このカラムは、入力カラムとマスターカラムの距離を示します。また、レコードのマッチングを行う基となるカラムの名前も示します。

    * ウィザードを次回開いた時にマッチングルールを実行しない場合は、[Deactivate matching computation when opening the wizard] (ウィザードオープン時にマッチング計算を無効化)チェックボックスをオンにします。
11. ウィザードの[Chart] (チャート)ボタンをクリックして、定義済みの設定でジョブを実行し、マッチング結果をウィザードに直接表示します。

    ![tMatchGroupでのチャートビューとテーブルビュー。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup9.png)

    マッチングチャートは、分析されたデータの重複の全体図が表示されます。また、一致テーブルには各グループのアイテム一致に関する詳細が示され、一致チャートの色に基づいてグループが色分けされます。

    ジョブはレコードにORマッチングオペレーションを実行します。ジョブは最初のルールを基にレコードを評価し、そこでマッチングしたレコードは2番目のルールでは評価しません。MATCHING\_DISTANCESカラムを見ると、どのルールがどのレコードに使用されたかを理解できます。一部のレコードは*address1*をキー属性として使用する2番目のルールに従ってマッチングされます。他方、グループ内のその他のレコードは、*lname*と*fname*をキー属性として使用する最初のルールに従ってマッチングされます。

    [Hide groups of less than] (未満でグループを非表示)パラメーターを設定し、マッチングチャートとテーブルに表示するグループを決定します。

## ジョブの確定と実行

### 手順

1. tLogRowコンポーネントをダブルクリックして、その[Basic settings] (基本設定)ビューを表示し、コンポーネントのプロパティを定義します。
2. ジョブを保存し、[F6]を押して実行します。

### タスクの結果

レコードが3つの異なるグループにまとめられていることが確認できます。各レコードが、グループ内で計算された最小距離であるグループスコアの値に従って、3つのグループのどれかにリスト表示されます。

各グループの識別子(*String*データ型のもの)が、対応するレコードの横にある*GID*カラム内にリスト表示されます。この識別子は、古いリリースから移行したジョブの場合は*Long*というデータ型になります。グループ識別子を*String*にするには、インポートしたジョブ内のtMatchGroupコンポーネントを、Talend Studioの[Palette] (パレット)からのtMatchGroupに置き換える必要があります。

3つの出力ブロックのそれぞれのレコード数が*GRP\_SIZE*カラム内にリスト表示され、マスターレコードでのみ計算されます。*MASTER*カラムは、対応するレコードがマスターレコードかそうでないかをTrueまたはFalseで示します。*SCORE*カラムには、Jaro-WinklerとJaroマッチングアルゴリズムに従い、入力レコードとマスターレコードの間の計算距離がリスト表示されます。

ジョブは最初のルールを基にレコードを評価し、そこでマッチングしたレコードは2番目のルールでは評価しません。

グループスコアがマッチング間隔(適用するルールに応じて*0.95*または*0.85*)の間にあるすべてのレコード、およびtMatchGroupの詳細設定で定義されている信頼しきい値が、[Suspects] (サスペクト)出力フロー内にリスト表示されます。

![「サスペクト」レコードの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup6.png)

グループスコアがマッチング可能性のどれか以上であるレコードのすべてが、[Matches] (マッチング)出力フロー内にリスト表示されます。

![「マッチング」レコードの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup7.png)

グループサイズが1に等しいレコードのすべてが、[Uniques] (一意)出力フロー内にリスト表示されます。

![「一意」レコードの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case_tmatchgroup8.png)

出力レコードを単一の出力フローにグルーピングする別のシナリオは、Identificationのセクションで[同じ機能キーを持つ出力フロー重複レコード内でカラムを比較し、グルーピングする](https://help.qlik.com/talend/ja-JP/components/8.0/identification/tgenkey-tmatchgroup-trowgenerator-tlogrow-comparing-columns-and-grouping-in-output-flow-duplicate-records-that-have-same-functional-key-standard-component-enterprise-this)をご覧ください。