# データクオリティルールとダイナミックスキーマを使ってデータを検証

情報メモ重要: Talend Studio 8.0 R2025-06以降、標準コンポーネントであるtDataQualityRulesは、tDQRulesに置き換えられました。このコンポーネントによって、以下からのルールを使用できるようになります:

* Qlik Talend Data Integration。
* Talend Cloud Data Inventory。
* Talend Cloud Data Stewardship。
* Talend Data Stewardship 8.0 R2022-07以降のハイブリッドバージョン

Apache Sparkジョブの場合、Talendアプリで使用できるのはtDataQualityRulesのみです。

このシナリオのジョブでは、Talend Studio 8.0 R2025-06より前のtDataQualityRulesコンポーネントを採用し、Talend Cloud Data Stewardshipからの[データクオリティルール](https://help.qlik.com/talend/r/ja-JP/Cloud/data-stewardship-user-guide/tds-dqr)を使ってデータを検証します。

このジョブは、詳細モードでデータクオリティルールを作成します。

```
if (purchase_price >= 2999) {discount_percentage == 0.2}
elseif (purchase_price >= 1999 && purchase_price < 2999) {discount_percentage == 0.15}
elseif (purchase_price >= 999 && purchase_price < 1999) {discount_percentage == 0.10}
elseif (purchase_price >= 599 && purchase_price < 999) {discount_percentage == 0.07}
else {discount_percentage == 0}
```

情報メモ重要: 標準コンポーネントではダイナミックスキーマを使用できます。ただし、Apache Sparkコンポーネントではサポートされていません。

## ジョブを設定

### 手順

1. tFileInputDelimitedコンポーネント、tDataQualityRulesコンポーネント、および2つのtLogRowコンポーネントを**[Palette] (パレット)**からデザインワークスペースにドロップします。
2. [Main] (メイン)リンクを使い、次のように接続させます。
   * tFileInputDelimitedからtDataQualityRulesに
   * tDataQualityRulesをいずれかのtLogRowに
3. [Reject] (リジェクト)リンクを使い、tDataQualityRulesを最後のtLogRowに接続させます。

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

   情報メモヒント: 有効なデータのみ必要である場合は、[Main] (メイン)リンクを使ってtDataQualityRulesを1つのtLogRowコンポーネントだけに接続させます。2番目のtLogRowコンポーネントは、無効なデータの詳細を示すためのものです。

## tFileInputDelimitedコンポーネントを設定

### 手順

1. tFileInputDelimitedをダブルクリックして[Basic settings] (基本設定)ビューを開きます。
2. [File Name/Stream] (ファイル名/ストリーム)フィールドに、ファイルパスを二重引用符で囲んで入力します。
3. この例では、入力データは次のようになります。
   ```
   id;price1;discount1;price2;discount2
   1;100;0.2;2000;0.1
   2;1000;0.05;4000;0.2
   3;1999;0.15;4200;0.2
   4;5000;0.2;3000;0.2
   5;300;0;30;0
   6;6000;0.2;3000;0.1
   7;price;;;
   ```
4. [Schema] (スキーマ)で[Built-In] (組み込み)を選択し、[Edit schema] (スキーマを編集)の横にある[...]をクリックします。
5. カラムを追加する場合は、![\[Add\] (追加)アイコン](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/add.svg)をクリックしてOKをクリックします。

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

   ダイナミックスキーマは、スキーマで定義されていないカラムを取得します。そのため、スキーマでdiscount1カラム、price2カラム、discount2カラムを定義する必要はありません。

   情報メモ重要: 標準コンポーネントではダイナミックスキーマを使用できます。ただし、Apache Sparkコンポーネントではサポートされていません。

## tDataQualityRulesコンポーネントを設定

### 始める前に

* Talend Cloud Data Stewardshipで[データクオリティルール](https://help.qlik.com/talend/r/ja-JP/Cloud/data-stewardship-user-guide/tds-dqr)を少なくとも1つ作成済みであること。
* パーソナルアクセストークンを持っていること。パーソナルアクセストークンを生成する場合は、[https://help.talend.com/r/ja-JP/Cloud/management-console-user-guide/cloud-access-token](https://help.qlik.com/talend/r/ja-JP/Cloud/management-console-user-guide/cloud-access-token)をご覧ください。

  情報メモヒント: この例では、Talend Cloud Data Stewardshipが使用されています。また、Talend Data Stewardship 8.0 R2022-07以降のハイブリッドバージョンとTalend Cloud Data InventoryのURLも入力できます。

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

ルールを取得するためには、[Rules - View] (ルール - 表示)権限が必要です。詳細は、使用しているアプリの[事前定義済みユーザーロール](https://help.qlik.com/talend/r/ja-JP/Cloud/management-console-user-guide/tmc-predefined-roles)をご覧ください。

### 手順

1. [Output schema] (出力スキーマ)として[Built-in] (組み込み)を選択します。
2. 入力コンポーネントからスキーマを取得するためには、[Sync columns] (カラムを同期)ボタンをクリックします。
3. [Application] (アプリケーション)ドロップダウンリストから、Data Stewardshipを選択します。
4. Talend Cloud Data StewardshipへのURL("https://tds.us.cloud.talend.com/")を入力します。

   このURLはお使いのリージョンによって異なります。[Talend Cloudのアプリケーションにアクセス](https://help.qlik.com/talend/ja-JP/installation-guide-windows/Cloud/talend-cloud-application-url)をご覧ください。
5. パーソナルアクセストークンを入力する場合は、[...]をクリックします。
6. データクオリティルールを取得する場合は、[Refresh] (更新)をクリックします。

   ![\[DQ rule library timestamp\] (DQルールライブラリーのタイプスタンプ)フィールドの横にある\[Refresh\] (更新)ボタン。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/tdqrules-timestamp-dynamic.png)

   [Refresh] (更新)をクリックすると、ルール定義が含まれているJARファイルが以下で作成されます:
   ```
   studio-path\configuration\.m2\repository\org\talend\libraries\rule-number
   ```

   Talend Cloud Data Stewardshipでデータクオリティルールをアップデートする場合は、[Refresh] (更新)をクリックして最新バージョンを取得します。
7. [Configure DQ rules] (DQルールを設定)の横にある[...]をクリックします。
8. [DQ rule] (DQルール)でルールを選択し、ルール変数を入力カラムに関連付けます。

   ![変数を関連付ける\[Configuration\] (設定)ウィンドウ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/tdqrules-dynamic-rule1config.png)

   Talend Studioのデータ型はTalend Cloud Data Stewardshipのデータ型の一部に関連付けることができます。プロパティで[データ型を関連付け](https://help.qlik.com/talend/ja-JP/components/8.0/validation/tdqrules "Talend StudioをQlik Talend Data IntegrationまたはTalendアプリに接続させ、データクオリティルールを使ってデータを検証します。")をご覧ください。

   利用できるルールや入力カラムがない場合は、次の点をご確認ください。
   * [DQ rule library timestamp] (DQルールライブラリーのタイムスタンプ)でデータクオリティルールが取得されたこと
   * 入力スキーマが正しいこと

   情報メモ制約事項: ルール変数を1つのカラムにのみ関連付けることができます。[Dynamic column selection] (ダイナミックカラムの選択)にカラムを1つだけ入力してください。
9. ウィザードの右下にある![\[Add\] (追加)アイコン](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/add.svg)ボタンをクリックし、さらに変数を関連付けます。
10. [DQ rule] (DQルール)で同じルールを選択し、ルール変数を入力カラムに関連付けます。
11. [Dynamic column selection] (ダイナミックカラムの選択)に、カラム名を二重引用符で囲んで入力します。

    ![変数を関連付ける\[Configuration\] (設定)ウィンドウ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/tdqrules-dynamic-rule2config.png)

    Talend Studioのデータ型はTalend Cloud Data Stewardshipのデータ型の一部に関連付けることができます。プロパティで[データ型を関連付け](https://help.qlik.com/talend/ja-JP/components/8.0/validation/tdqrules "Talend StudioをQlik Talend Data IntegrationまたはTalendアプリに接続させ、データクオリティルールを使ってデータを検証します。")をご覧ください。

    利用できるルールや入力カラムがない場合は、次の点をご確認ください。
    * [DQ rule library timestamp] (DQルールライブラリーのタイムスタンプ)でデータクオリティルールが取得されたこと
    * 入力スキーマが正しいこと

    情報メモ制約事項: ルール変数を1つのカラムにのみ関連付けることができます。[Dynamic column selection] (ダイナミックカラムの選択)にカラムを1つだけ入力してください。
12. 設定を検証するため、[OK]をクリックします。

## tLogRowコンポーネントを設定

### 手順

1. tLogRowコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを開きます。
2. [Schema] (スキーマ)で[Built-In] (組み込み)を選択し、[Sync columns] (カラムを同期)をクリックします。
3. [Mode] (モード)エリアで、[Table (print values in cells of a table)] (テーブル(テーブルのセルの出力値))を選択します。

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

## ジョブを保存して実行

### 手順

ジョブを保存し、**F6**を押して実行します。

### タスクの結果

[Main] (メイン)リンクのtLogRowは、割引がルールに対応する価格を返します。この例では、price1とprice2で割引が正しいことを意味します。

```
.--+------+-----------------.
|         tLogRow_1         |
|=-+------+----------------=|
|id|price1|dynamic_column   |
|=-+------+----------------=|
|3 |1999  |0.15 - 4200 - 0.2|
|4 |5000  |0.2 - 3000 - 0.2 |
|5 |300   |0 - 30 - 0       |
'--+------+-----------------'
```

無効なデータもフィルタリングされます。

```
.--+------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
|                                                                                                                                       tLogRow_2                                                                                                                                       |
|=-+------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|id|price1|dynamic_column   |INVALID_STATUS                                                                                                                                                                                                                                             |
|=-+------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|1 |100   |0.2 - 2000 - 0.1 |[{"executionResults":[{"ruleName":"Discount percentage","inputColumn":["price1","dynamic_column.discount1"],"status":"Invalid"},{"ruleName":"Discount percentage","inputColumn":["dynamic_column.price2","dynamic_column.discount2"],"status":"Invalid"}]}]|
|2 |1000  |0.05 - 4000 - 0.2|[{"executionResults":[{"ruleName":"Discount percentage","inputColumn":["price1","dynamic_column.discount1"],"status":"Invalid"},{"ruleName":"Discount percentage","inputColumn":["dynamic_column.price2","dynamic_column.discount2"],"status":"Valid"}]}]  |
|6 |6000  |0.2 - 3000 - 0.1 |[{"executionResults":[{"ruleName":"Discount percentage","inputColumn":["price1","dynamic_column.discount1"],"status":"Valid"},{"ruleName":"Discount percentage","inputColumn":["dynamic_column.price2","dynamic_column.discount2"],"status":"Invalid"}]}]  |
|7 |price | -  -            |[{"executionResults":[{"ruleName":"Discount percentage","inputColumn":["price1","dynamic_column.discount1"],"status":"NE"},{"ruleName":"Discount percentage","inputColumn":["dynamic_column.price2","dynamic_column.discount2"],"status":"NE"}]}]          |
'--+------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
```

NEというステータスは、データでルールを実行できないことを意味します。このシナリオでは数値を検証するルールが設定されているため、price値は検証できません。

その他の無効なデータは、price1とprice2 (またはそのいずれか)に適用された割引が正しくないことを意味します。

たとえば、行番号2にある割引0.05は価格1000に対して不正確ですが、割引0.2は価格4000に対して正確です。