8.13. 条件のマッピングへの適用
				インテグレーションによっては、条件処理をマッピングに追加すると便利なものがあります。たとえば、ソースの zip コードフィールドに、ターゲットの zip コードフィールドをマッピングすると仮定し、ソースの zip コードフィールドが空白の場合には、ターゲットのフィールドに 99999 と入力することにします。これを実行するには、ソースの zip コードフィールドをテストして、空かどうかを判断するための式を指定し、空の場合は 99999 をターゲットの zip コードフィールドにマップします。
			
条件のマッピングへの適用はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。Red Hat は、実稼働環境でこれらを使用することを推奨していません。これらの機能により、近日発表予定の製品機能をリリースに先駆けてご提供でき、お客様は開発プロセス時に機能をテストして、フィードバックをお寄せいただくことができます。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、https://access.redhat.com/ja/support/offerings/techpreview を参照してください。
データマッパーがサポートする式は Microsoft Excel の式と似ていますが、Microsoft Excel のすべての式構文をサポートしていません。条件式は、個別のフィールド、またはコレクションにあるフィールドを参照できます。
各マッピングには 1 つの条件を定義でき、条件を定義しないことも可能です。
以下の手順は、条件をマッピングに適用できるようにします。
注記: 条件をマッピングに追加した後、Source および Target の変換オプションが無効になります。変換を条件式内に追加する必要があります。
前提条件
- データマッパー ステップでフィールドをマッピングします。
- Microsoft Excel 式に詳しいか、マッピングに適用する条件付きの式がある必要があります。
手順
- データタイプが表示されない場合は、  をクリックして表示します。 をクリックして表示します。- これは、条件を指定するための要件ではありませんが、データタイプを表示すると便利です。 
- 条件を適用するマッピングを作成するか、現在選択しているマッピングが条件を適用するマッピングであることを確認します。たとえば、以下のマッピングについて考えてみましょう。   
- 左上の  をクリックして条件式入力フィールドを表示します。 をクリックして条件式入力フィールドを表示します。- データマッパーは、式フィールドに現在のマッピングにあるソースフィールドの名前を自動的に表示します。以下に例を示します。   - 式入力フィールドでは、ソースフィールドの順序は、マッピングの作成時に選択した順序になります。これは、データマッパーがこの順序でフィールド値を連結し、結果をターゲットフィールドに挿入するのがデフォルトのマッピング動作であるため、重要になります。この例では、このマッピングの作成では、最初に - lastNameが選択されてから- firstNameが選択されます。
- 式入力フィールドを編集して、データマッパーがマッピングに適用する条件式を指定します。サポートされる条件式の詳細は、次の手順に従います。 - 条件マッピングに変換を含める場合は、条件式に変換を追加する必要があります。 - 式を指定するときに、 - @と入力してからフィールドの名前を入力します。データマッパーは入力内容に一致するフィールドのリストを表示します。式に指定するフィールドを選択します。- フィールド名を式に追加するとき、データマッパーはそのフィールドをマッピングに追加します。たとえば、以下の条件式について考えてみましょう。   - 実行中、データマッパーによって - lastNameが空であると判断されると、firstname フィールドのみを- firstNameフィールドのみをターゲット- customerNameフィールドにマップします。- lastNameフィールドに値が含まれ、空でない場合、データマッパーはソースの- orderIdおよび- phoneフィールドの値を連結し、結果を- customerNameフィールドに挿入します。(以下の例は論理の仕組みを示していますが、- lastNameフィールドに値があるときは、データマッパーと使用して単にマッピングを実行し、他の値をターゲットにマップしない可能性が高いため、実践的な例とは言えません。)- この例では、式の入力後にデータマッピングは次のようになります。   - 条件式で式が適用されるマッピングにあるフィールド名を削除すると、データマッパーはそのフィールドをマッピングから削除します。つまり、マッピングのすべてのフィールド名は条件式にある必要があります。 
- 
						マッピングプレビューフィールドが表示されていない場合は、 
						 をクリックして表示します。 をクリックして表示します。
- ソースのプレビュー入力フィールドにサンプルデータを入力して、ターゲットフィールドが正しい値であることを確認します。
- 必要に応じて条件式を編集して、目的の結果を取得します。
条件式でサポートされる関数
- ISEMPTY(source-field-name1 [+ source-field-name2])- ISEMPTY()関数の結果はブール値です。条件を適用するマッピングのソースフィールドの名前である引数を最低でも 1 つ指定します。指定したソースフィールドが空の場合、- ISEMPTY()関数は true を返します。- 必要に応じて、次の例のように + (連結) 演算子を追加のフィールドと追加します。 - ISEMPTY(lastName + firstName)- この式は、ソースフィールドの - lastNameと- firstNameが両方空の場合に true に評価されます。- 多くの場合、 - ISEMPTY()関数は- IF()関数の最初の引数になります。
- IF(boolean-expression, then, else)- boolean-expressionが true に評価されると、データマッパーは- thenを返します。- boolean-expressionが false に評価されると、データマッパーは- elseを返します。3 つの引数がすべて必要です。最後の引数は null にすることができます。つまり、- boolean-expressionが false に評価されると何もマッピングされません。- たとえば、ターゲット - customerNameフィールドの- lastNameおよび- firstNameを組み合わせるマッピングについて考えてみましょう。この条件式を指定できます。- IF (ISEMPTY(lastName), firstName, lastName + ‘,' + firstName )- 実行中、データマッパーは - lastNameフィールドを評価します。- 
								lastNameフィールドが空で、ISEMPTY(lastName)が true を返す場合、データマッパーはfirstNameの値のみをターゲットcustomerNameフィールドに挿入します。
- lastNameフィールドに値が含まれ、- ISEMPTY(lastName)が false を返す場合、データマッパーは- firstNameの値とコンマの後に- lastNameの値をターゲットの- customerNameフィールドにマップします。- この式の 3 つ目の引数が null であった場合の動作について考えてみましょう。 - IF (ISEMPTY(lastName), firstName, null )- 実行中、データマッパーは - lastNameフィールドを評価します。
- 
								前の例のように、lastNameフィールドが空で、ISEMPTY(lastName)が true を返す場合、でデータマッパーはfirstNameの値のみをターゲットのcustomerNameフィールドに挿入します。
- 
								しかし、3 つ目の引数が null であり、lastNameフィールドに値が含まれ、ISEMPTY(lastName)が false を返す場合は、データマッパーはターゲットのcustomerNameフィールドに何もマップしません。
 
- 
								
- LT(x,y)または- <(x,y)- データマッパーは - xおよび- yを評価し、小さい方の値を返します。- xと- yはどちらも数字である必要があります。
- TOLOWER(string)- データマッパーは指定の文字列を小文字に変換し、返します。 
| 演算子 | 説明 | 
| 
								 | 数値の値または連結文字列値を加算します。 | 
| 
								 | 1 つの数値を別の数値から減算します。 | 
| 
								 | 数値を乗算します。 | 
| 
								 | 数値を除算します。 | 
| 
								 | 左と右のオペランドが両方 true の場合に true を返します。各オペランドは、ブール値を返す必要があります。 | 
| 
								 | 左のオペランド、右のオペランド、または両方のオペランドが true の場合に true を返します。各オペランドは、ブール値を返す必要があります。 | 
| 
								 | Not (否定) | 
| 
								 | 左の数値オペランドが右の数値のオペランドよりも大きい場合に true を返します。 | 
| 
								< | 左の数値オペランドが右の数値のオペランドよりも小さい場合に true を返します。 | 
| 
								 | 左の数値オペランドと右の数値のオペランドが同じ場合に true を返します。 |