# レコードフィルターコンポーネントの定義

## 手順

1. tFilterColumnsコンポーネントの次に、別のaddComponent {}関数とそのサブ関数のsetComponentDefinition {}を入力して、tFilterRowコンポーネントを追加します。
   ```
   // filter records - accept men between 10 and 80 whose names are shorter than 9 characters
   addComponent {
   	setComponentDefinition {
   		TYPE: "tFilterRow",
   		NAME: "tFilterRow_1",
   		POSITION: 640, 224
   	}
   }
   ```
2. setComponentDefinition {}関数の次に、setSettings {}関数を入力してフィルター条件を定義し、コンポーネントのラベルを設定します。
   ```
   	setSettings {
   		LOGICAL_OP : "&&",
   		CONDITIONS {
   			INPUT_COLUMN : "name",
   			FUNCTION : "$source == null? false : $source.length() $operator $target",
   			OPERATOR : "<",
   			RVALUE : "9",
   			INPUT_COLUMN : "gender",
   			FUNCTION : "",
   			OPERATOR : "==",
   			RVALUE : "\"M\"",
   			INPUT_COLUMN : "age",
   			FUNCTION : "",
   			OPERATOR : ">",
   			RVALUE : "10",
   			INPUT_COLUMN : "age",
   			FUNCTION : "",
   			OPERATOR : "<",
   			RVALUE : "80"
   		},
   		LABEL : "filter_records"
   	}
   ```

   情報メモ警告:

   メタ文字を指定する場合、必ずバックスラッシュ(\)を使用してください。
3. setSettings {}関数の次に、以下のスクリプトコードを入力して、出力フローのスキーマを定義します。

   この例では、tFilterRowコンポーネントは2つの出力フローで構成されています。1つは承認済みのレコードを含み、直前のコンポーネントtFilterColumnsで定義されているスキーマ構造と同じスキーマ構造になります。もう一つの出力フローはリジェクトされたレコードを含み、ここにはerrorMessageのカラムも含まれます。errorMessageカラムはリジェクトフローでは必須で、固定プロパティを含みます。このカラムを定義しない場合でも、Talend Studioはジョブの生成時に自動的にこのカラムを追加します。
   ```
   	// define the schema for the accepted records
   	addSchema {
   		NAME: "ACCEPT",
   		CONNECTOR: "FILTER"
   		addColumn {
   			NAME: "name",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "gender",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "age",
   			TYPE: "id_Integer",
   			LENGTH: 2
   		}
   		addColumn {
   			NAME: "city",
   			TYPE: "id_String"
   		}
   	}
   	
   	// define the schema for the rejected records
   	addSchema {
   		NAME: "REJECT",
   		CONNECTOR: "REJECT"
   		addColumn {
   			NAME: "name",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "gender",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "age",
   			TYPE: "id_Integer",
   			LENGTH: 2
   		}
   		addColumn {
   			NAME: "city",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "errorMessage",
   			TYPE: "id_String",
   			NULLABLE: true,
   			LENGTH: 255,
   			PRECISION: 0
   		}
   	}
   ```