7.14. 条件のマッピングへの適用
インテグレーションによっては、条件処理をマッピングに追加すると便利なものがあります。たとえば、ソースの 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
フィールドに値があるときは、データマッパーと使って単にマッピングを実行し、他の値をターゲットにマップしない可能性が高いため、実践的な例とは言えません。)この例では、式の入力後にデータマッピングは次のようになります。
条件式で式が適用されるマッピングにあるフィールド名を削除すると、データマッパーはそのフィールドをマッピングから削除します。つまり、マッピングのすべてのフィールド名は条件式にある必要があります。
- マッピングプレビューフィールドが表示されていない場合は、 をクリックして表示します。
- ソースのプレビュー入力フィールドにサンプルデータを入力して、ターゲットフィールドが正しい値であることを確認します。
オプションで、変換を適用する各フィールドの横にある をクリックして、選択したマッピングの 1 つ以上のソースフィールドまたはターゲットフィールドに変換を適用し、プルダウンメニューから目的の変換を選択します。
たとえば、この手順と同じマッピングで Mapping Details パネルにて
Uppercase
変換をfirstName
フィールドに適用できます。これをテストするには、firstName
フィールドのプレビュー入力フィールドにデータを入力します。- 必要に応じて条件式を編集して、目的の結果を取得します。
条件式でサポートされる関数
SELECT(FILTER(source-collection-name, source-field-name1 != 'v1' ), source-field-name2)
複数のフィールドを持つコレクションの場合、データマッパーは、(同じコレクション内の) 別のソースフィールドの値に基づいて、1 つのソースフィールドの値をフィルタリングします。たとえば、コレクション (
person
) にname
およびgender
を含む複数のフィールドが含まれている場合は、次の条件式を使用して、gender
フィールドの値でname
をフィルター処理し、男性の名前のみがターゲットフィールドにマップされるようにすることができます。SELECT(FILTER(person, gender = 'male' ), name)`
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 を返します。 |