7.12. コレクションと非コレクション間のマッピング

データマッパーの Source および Target パネルには以下があります。

  • Collection icon はコレクションを示します。コレクションにプリミティブタイプが含まれる場合は、コレクションをマップ元またはマップ先として直接マッピングできます。コレクションに 2 つ以上の異なるタイプが含まれる場合、データマッパーはコレクションの子フィールドを表示し、コレクションのフィールドをマップ元またはマップ先としてマッピングできます。
  • Folder icon は、コンプレックスタイプの拡張可能なコンテナーを示します。コンプレックスタイプには、異なるタイプの複数のフィールドが含まれます。コンプレックスタイプのフィールドは、アレイなどのコレクションのタイプにすることができます。コンプレックスタイプのコンテナー自体をマップすることはできません。コンプレックスタイプにあるフィールドのみをマップできます。

(COMPLEX)STRINGINTEGER などのデータタイプの表示を切り替えるには、 Show/hide types icon をクリックします。

コレクションから非コレクション (多対 1) へのマッピング

コレクションフィールドから非コレクションフィールドにマップする場合、多対 1 のマッピングがデータマッパーによって認識されます。デフォルトの動作では、データマッパーによって Concatenate 変換がソースコレクションまたはソースコレクションフィールドに適用されます。デフォルトの区切り文字は空白文字です。たとえば、以下のソースコレクションについて考えてみましょう。

  • 最初の要素では、city フィールドの値は Boston です。
  • 2 つ目の要素では、city フィールドの値は Paris です。
  • 3 つ目の要素では、city フィールドの値は Tokyo です。

実行中、ターゲットフィールドに以下が入力されます。

Boston Paris Tokyo

別の変換を適用すると、このデフォルトの動作を変更できます。たとえば、選択する要素からのみマップするには、Item At 変換をソースに適用し、インデックスを指定します。ソースコレクションの最初の要素にある値をマップするには、インデックスに 0 を指定します。

マップしないフィールドがソースコレクションに含まれている場合、これらのフィールドはフローにある後続のステップでも使用できます。

非コレクションからコレクション (1 対多) へのマッピング

非コレクションソースフィールドからターゲットコレクションやコレクション要素のターゲットフィールドにマップする場合、1 対多のマッピングがデータマッパーによって認識されます。デフォルトの動作では、空白を区切り文字として使用し、ソース値を複数の値に分割して Split 変換がデータマッパーによって適用されます。実行中、それぞれの分割値がターゲットコレクションの独自の要素に挿入されます。たとえば、ソースフィールドが 4 つの値に分割される場合、ターゲットコレクションには 4 つの要素が存在します。

たとえば、以下が含まれるコレクションでない cities ソースフィールドについて考えてみましょう。

Boston Paris Tokyo

このソースフィールドをターゲットコレクションまたはコレクションのターゲットフィールドにマップできます。実行中、cities フィールドの値は区切り文字 (空白文字) で分割されます。結果として、3 つの要素が含まれる 1 つのコレクションが作成されます。最初の要素では、city フィールドの値は Boston です。2 つ目の要素では、city フィールドの値は Paris です。3 つ目の要素では、city フィールドの値は Tokyo です。