# 式ビルダーを使ってコードを作成

一部のジョブでは、コンポーネントのパラメーターを記述するため、コードを一部作成する必要があります。一部のコンポーネントの[Component] (コンポーネント)ビューでは、[Expression Builder] (式ビルダー)インターフェイスが、式として知られているこの種の(Java)コードの作成に役立ちます。

tMapの式ビルダーを使って、入力カラム、出力カラム、または変数の式を編集したり、複数の出力カラムの式を同時に変更したりできます。

## 個別の式を編集する

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

以下の例では、[Expression Builder] (式ビルダー)を使って2つの個別の式を編集する方法を示します。

![tMapコンポーネント、tMysqlInputコンポーネント、tFileInputDelimitedコンポーネント、tLogRowコンポーネントを使ったジョブの例。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder1.png)

この例では、2つの入力フローがtMapコンポーネントに接続されています。

* DB入力からは、名と姓を空白文字で区切った人名のリストが受信されます。

* ファイル入力からは、小文字の米国の州のリストが受信されます。

tMapで式ビルダーを使用して、まず、名と姓を区切っている空白文字を下線文字に置き換えます。次に、州を小文字から大文字に変更します。

### 手順

1. tMapでは、適切な内部結合を設定して参照マッピングを設定します。

   tMapの詳細は、[tMap操作](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/tmap-operation)および[データフローをマッピング](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/map-editor-interfaces)をご覧ください。
2. メイン(row1)入力からNamesカラムを出力エリアに、ルックアップ(row2)入力からStateカラムを同じ出力エリアに向けてドロップします。
3. 最初の[Expression] (式)フィールド(row1.Name)をクリックし、次に式の横に表示される[...]ボタンをクリックします。

   ![\[...\]ボタンの場所。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder5.png)

   [Expression Builder] (式ビルダー)ダイアログボックスが開きます。

   ![\[Expression Builder \] (式ビルダー)ダイアログボックスの概要。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder3.png)
4. [Category] (カテゴリー)エリアから、実行する適切なアクションを選択します。In this example, select StringHandling and select the EREPLACEfunction.
5. [Expression] (式)エリアで、テキストの部分にrow1.Nameを貼り付け、次のコードを取得します: StringHandling.EREPLACE(row1.Name," ","\_")。この式で文字列の空白区切り文字を下線に置き換えます。

   特定の古い文字列内の特定の正規表現にマッチするすべてのsubstringを特定の置換文字列に置き換え、新しい文字列を返すために、StringHandlingカテゴリーのCHANGEファンクションとEREPLACEファンクションが使用されています。これらのファンクションには次の3つのパラメーターがあります。
   * oldStr: 古い文字列。
   * newStr: マッチさせる正規表現。
   * replacement: すべてのマッチについて置き換える文字列。
6. ここで[Test] (テスト)エリアの該当する[Value] (値)フィールドにプレースホルダー値のChuck Norrisを入力し、Test!をクリックして、出力が正しいかどうかをチェックします。この例では、Chuck\_Norrisと正しく変更が実行されているはずです。
7. OKをクリックして変更を確定した後、2番目のカラム[State] (州)に対して同じ操作を行います。
8. tMap 出力でrow2.Stateの式を選択して[...]ボタンをクリックし、[Expression builder] (式ビルダー)を再度開きます。

   ![\[Expression Builder \] (式ビルダー)ダイアログボックスの概要。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder2.png)

   今回使用するStringHandlingファンクションはUPCASEになります。完全な式では、StringHandling.UPCASE(row2.State)と表示されます。
9. もう一度、[Test] (テスト)エリアでプレースホルダー値(indianaなど)を使い、式の構文が正しいことをチェックします。この例では、Test!の結果は、INDIANAと表示されるはずです。次にOK をクリックして変更を確定します。

   [tMap Expression] (tMap式)フィールドには、現在両方の式が表示されています。

   ![\[マップ\]エディター。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder4.png)

### タスクの結果

これらの変更はフロー処理で実行されます。この例の出力は次のように示されます。

![いくつかの結果の例。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/Expr_Builder6.png)

## 複数の出力カラムに式を同時に設定

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

tMapでは、複数の出力カラムの変換動作を同時に定義できます。

以下の例では、単純な変換ジョブを使用して、tMapで複数カラムの式をバッチ方式で定義する方法を示しています。

![tFileInputDelimitedコンポーネント、tMapコンポーネント、tLogRowコンポーネントを使ったジョブの例。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_1.png)

以下は、この例で使用している入力CSVファイルの内容です。

```
id;firstname;lastname;city;state
               1; Andrew;Adams;Madison; Rhode Island
               2;Andrew; Garfield; Saint Paul;Colorado
               3; Woodrow;   Eisenhower    ; Juneau; New Hampshire
               4;Woodrow; Jackson;Denver;Maine
               5; Lyndon;Buchanan; Pierre; Kentucky
               6;  Bill;Tyler; Helena; New York
               7;George;Adams;Oklahoma City    ;Alaska
               8;Ulysses; Garfield;Santa Fe;Massachusetts
               9; Thomas;Coolidge  ;Charleston;   Mississippi
               10;John;Polk;   Carson City;  Louisiana
```

この例では、[String] (文字列)タイプの出力カラムはすべて切り詰めて整えられ、最初と最後のホワイトスペースが削除され、姓と州名が大文字に変換されます。

### 手順

1. [Map Editor] (マップエディター)で入力と出力のマッピングを行います。

   ![\[マップ\]エディター。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_2.png)
2. 出力テーブルで文字列タイプのカラムを選択します。すなわち、この例ではfirstname、lastname、city、stateです。選択したカラムを右クリックすると、[Apply Routine] (ルーチンを適用)ボタンが表示されます。

   ![マップエディターからの\[Apply Routine\] (ルーチンを適用)ボタン。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_3.png)
3. [Apply Routine] (ルーチンを適用)ボタンをクリックして、[Expression Builder] (式ビルダー)ダイアログボックスを開きます。

   ![\[Expression Builder \] (式ビルダー)ダイアログボックスの概要。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_4.png)
4. [Categories] (カテゴリー)エリアでStringHandlingを選択し、[Functions] (ファンクション)エリアでTRIMファンクションをダブルクリックして、[Expression] (式)フィールドにStringHandling.TRIM(${0})を取得します。

   ![\[Expression Builder\] (式ビルダー)ダイアログボックスの\[Expression\] (式)フィールド。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_5.png)
5. OKをクリックして[Expression Builder] (式ビルダー)ダイアログボックスを閉じます。
6. [Map Editor] (マップエディター)の出力テーブルでlastnameカラムとstateカラムを選択し、選択したカラムを右クリックし、[Apply Routine] (ルーチンを適用)ボタンをクリックして[Expression Builder] (式ビルダー)ダイアログボックスを開きます。
7. [Categories] (カテゴリー)エリアでStringHandlingを選択し、[Functions] (ファンクション)エリアでUPPERCASEファンクションをダブルクリックして、[Expression] (式)フィールドにStringHandling(${0})を取得します。

   ![\[Expression Builder\] (式ビルダー)ダイアログボックスの\[Expression\] (式)フィールド。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_6.png)
8. OKをクリックして[Expression Builder] (式ビルダー)ダイアログボックスを閉じます。

### タスクの結果

ここで、これらの出力カラムの式は次のようになります。

![マップエディターからの\[Output\] (出力)セクション。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_7.png)

ファンクションはフロー処理で実行されます。この例の出力は次のように示されます。 ![いくつかの結果の例。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/expr_builder_example2_8.png)