7.10. コレクションと非コレクション間のマッピング
データマッパーの Source および Target パネルには以下があります。
- はコレクションを示します。コレクションにプリミティブタイプが含まれる場合は、コレクションをマップ元またはマップ先として直接マッピングできます。コレクションに 2 つ以上の異なるタイプが含まれる場合、データマッパーはコレクションの子フィールドを表示し、コレクションのフィールドをマップ元またはマップ先としてマッピングできます。
- は、コンプレックスタイプの拡張可能なコンテナーを示します。コンプレックスタイプには、異なるタイプの複数のフィールドが含まれます。コンプレックスタイプのフィールドは、アレイなどのコレクションのタイプにすることができます。コンプレックスタイプのコンテナー自体をマップすることはできません。コンプレックスタイプにあるフィールドのみをマップできます。
(COMPLEX)
、STRING
、INTEGER
などのデータタイプの表示を切り替えるには、
をクリックします。
コレクションから非コレクション (多対 1) へのマッピング
コレクションフィールドから非コレクションフィールドにマップする場合、多対 1 のマッピングがデータマッパーによって認識されます。デフォルトの動作では、データマッパーによって Concatenate 変換がソースコレクションまたはソースコレクションフィールドに適用されます。デフォルトの区切り文字は空白文字です。たとえば、以下のソースコレクションについて考えてみましょう。
- 最初の要素では、city フィールドの値は Boston です。
- 2 つ目の要素では、city フィールドの値は Paris です。
- 3 つ目の要素では、city フィールドの値は Tokyo です。
実行中、ターゲットフィールドに以下が入力されます。
Boston Paris Tokyo
別の変換を適用すると、このデフォルトの動作を変更できます。たとえば、選択する要素からのみマップするには、Item At 変換をソースに適用し、インデックスを指定します。ソースコレクションの最初の要素にある値をマップするには、インデックスに 0
を指定します。
マップしないフィールドがソースコレクションに含まれている場合、これらのフィールドはフローにある後続のステップでも使用できます。
非コレクションからコレクション (1 対多) へのマッピング
非コレクションソースフィールドからターゲットコレクションやコレクション要素のターゲットフィールドにマップする場合、1 対多のマッピングがデータマッパーによって認識されます。デフォルトの動作では、空白を区切り文字として使用し、ソース値を複数の値に分割して Split 変換がデータマッパーによって適用されます。実行中、それぞれの分割値がターゲットコレクションの独自の要素に挿入されます。たとえば、ソースフィールドが 4 つの値に分割される場合、ターゲットコレクションには 4 つの要素が存在します。
本リリースでは、Split 変換のみを 1 対多マッピングに適用できます。
たとえば、以下が含まれるコレクションでない cities
ソースフィールドについて考えてみましょう。
Boston Paris Tokyo
このソースフィールドをターゲットコレクションまたはコレクションのターゲットフィールドにマップできます。実行中、cities フィールドの値は区切り文字 (空白文字) で分割されます。結果として、3 つの要素が含まれる 1 つのコレクションが作成されます。最初の要素では、city フィールドの値は Boston
です。2 つ目の要素では、city フィールドの値は Paris
です。3 つ目の要素では、city フィールドの値は Tokyo
です。