# スキーマと比較してデータを検証

このシナリオでは、受信フローからのデータのタイプ、NULL値、長さを定義済みの参照スキーマと照合し、検証結果を[Run] (実行)コンソールに表示するジョブについて説明します。

受信フローは、以下に示すように、誤ったデータ型、最大長を超えるデータ、誤ったID、およびNULL不可のカラムに含まれるNULL値などの異種データを含む簡単なCSVファイルから取得されます。

```
ID;Name;BirthDate;State;City
1;Dwight;06-04-2008;Delaware;Concord
2;Warren;25-10-2008;Montana
3;Benjamin;17-08-2008;Washington;Austin
4;Harry;14-04-2008;Kansas;Annapolis
5;Ulysses;2007-04-12;Michigan;Raleigh
6;James;19-08-2007;Delaware;Charleston
.7;Bill;20-04-2007;Illinois;Bismarck
8;Ulysses;04-12-2008;;Saint Paul
9;Thomas;09-05-2008;Maryland;Albany
10;Ronald;11-02-2008;Florida;Hartford
```

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

## ジョブを設定

### 手順

1. 次のコンポーネントを削除します:tFileInputDelimited、tSchemaComplianceCheck、および2つのtLogRow コンポーネントを[パレット]からデザインワークスペースへ
2. [Row] (行) &gt; [Main] (メイン)接続を使って、tFileInputDelimitedコンポーネントをtSchemaComplianceCheckコンポーネントに接続させます。
3. [Row] (行) &gt; [Main] (メイン)接続を使って、tSchemaComplianceCheckコンポーネントをtLogRowコンポーネントに接続させます。この出力フローは有効なデータを収集します。
4. [Row] (行) &gt; [Rejects] (リジェクト)接続を使って、tSchemaComplianceCheckコンポーネントをtLogRowコンポーネントに接続させます。この出力フローによって不適合データが収集されます。さらに2つのカラムをerrorCodeコンポーネントとerrorMessageコンポーネントに渡します。これら2つの読み取り専用カラムは、拒否されたデータに関する情報を提供し、必要に応じてエラー処理とトラブルシューティングを容易にします。

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

## コンポーネントの設定

### 手順

1. tFileInputDelimitedコンポーネントをダブルクリックして[Basic settings] (基本設定)ビューを表示します。
2. 基本パラメーター(入力ファイル名、スキップするヘッダー行数など)を定義します。

   ![tFileInputDelimitedコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tSchemaComplianceCheck2.png)
3. [Edit Schema] (スキーマを編集)の横にある[...]をクリックして、入力ファイルのデータストラクチャーを示します。この例では、スキーマは5つのカラム(ID、Name、BirthDate、State、City)で構成されています。
4. Name、State、Cityカラムの[Length] (長さ)フィールドに、それぞれ7、10、10と入力します。

   ![tFileInputDelimitedコンポーネントのスキーマ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tSchemaComplianceCheck3.png)
5. OKをクリックします。
6. tSchemaComplianceCheckコンポーネントをダブルクリックして[Basic settings] (基本設定)ビューを表示します。
7. 検証パラメーターを定義します。

   ![tSchemaComplianceCheckコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tSchemaComplianceCheck4.png)
8. [Mode] (モード)エリアで[Custom defined] (カスタム定義)オプションを選択し、カスタム定義のチェックを実行します。

   この例では、[Checked Columns] (チェック対象カラム)テーブルを使って検証パラメーターを設定します。また、次の選択も可能です。
   * 基本スキーマに対して全カラムですべてのチェック(型、NULL値、長さ)を行いたい場合は、[Check all columns from schema] (すべてのカラムをスキーマに対してチェック)チェックボックスをオンにします。
   * [Use another schema for compliance check] (コンプライアンスチェックに他のスキーマを使用)オプションを使い、データの期待されるストラクチャーとして新しいスキーマを定義します。
9. [Checked Columns] (チェック対象カラム)テーブルで、実行するチェックを定義します。このサンプルでは、次のようになります。
   * IDカラムのタイプはInt|Integerにする必要があります。
   * Nameカラム、Stateカラム、Cityカラムの長さをチェックします。
   * BirthDateカラムはDateにする必要があります。期待される日付パターンはdd-MM-yyyyです。
   * どのカラムでもNULL値をチェックする必要があるため、すべてのカラムで[Nullable] (Null可能)チェックボックスをオフにします。

   情報メモヒント: 定義された最大長を超えるフィールドを含む行を拒否フローに送信するには、[Trim the excess content of column when length checking chosen and the length is greater than defined length] (長さチェックが選択され、定義された長さを超える場合はカラムの余分なコンテンツを切り捨て)チェックボックスをオフにします。
10. tSchemaComplianceCheck コンポーネントの[Advanced settings] (詳細設定)ビューで、[Treat all empty string as NULL] (空の文字列をすべてNULLと見なす)オプションを選択して、空のフィールドを含む行を拒否フローに送信します。
11. 検証結果を表形式で[Run] (実行)コンソールに表示するには、各tLogRowコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューの[Table] (テーブル)オプションを選択します。

## ジョブを実行

### 手順

ジョブを保存し、F6を押して起動させます。

有効なデータと拒否されたデータをそれぞれ示す2つのテーブルがコンソールに表示されます。

![コンソールからの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tSchemaComplianceCheck6.png)

**関連概念**

* [tSchemaComplianceCheck](https://help.qlik.com/talend/ja-JP/components/8.0/validation/tschemacompliancecheck "参照データソースとの照合によりあらゆるソースデータのデータクオリティを保証します。")

**関連情報**

* [tLogRow](https://help.qlik.com/talend/r/ja-JP/8.0/components/logs-and-errors/tlogrow)
* [tFileInputDelimited](https://help.qlik.com/talend/r/ja-JP/8.0/components/delimited/tfileinputdelimited)