CData Arc では多様な接続先とのデータ連携を実現するために中間フォーマットとしてXML を利用しており、データソース間での項目マッピングには、XML Map コネクタを利用します。
cdn.arcesb.com
項目マッピングはレコード単位で行われるケースが殆どだと思いますが、なかには「ファイル内のレコード行数の出力」や「ファイル内でのレコード番号(通番)の付与」など、マッピング全体を通じて値を保持・計算し、出力したいケースもあると思います。
こういった時、CData Arc では Mapping Context (_map )
アイテムを利用することで実現できます。この記事では Mapping Context (_map )
アイテムについて、簡単なサンプルとともに紹介します。
Mapping Context (_map )
CData Arc で利用できるArcScript には幾つかのビルトインアイテムが用意されていますが、Mapping Context (_map )
はXML Map コネクタで利用できる特別なアイテムです。通常のアイテムはマッピングが次の出力ノードに移動するたびにクリアされますが、_map アイテムはドキュメント全体がマップされるまでクリアされず保持されます。
このため、_map
アイテムは、マッピングのある時点で計算を行い、マッピングの後半で参照する情報を保存するときなどに便利です。
ArcScript に関心のある方は、ぜひこちらのナレッジベースも活用してください。
arc.cdata.com
例1. レコード行数を出力する
In のItem レコードの出現回数を計算して、Out のItemCount として出力します。
In
xml version="1.0" encoding="UTF-8"
1
a
2
b
3
c
Out
xml version="1.0" encoding="UTF-8"
1
a
2
b
3
c
3
XML Map
XML Map で以下のように設定します。
- Item 配下に新規コードスクリプト(カスタムスクリプト)を追加して、出現回数を加算する
出現回数の計算中は出力ノードには設定せず、計算用の新規コードスクリプト(カスタムスクリプト)を利用します。
<arcset item="_map" attr="itemCount" value="[_map.itemCount | def(0) | add(1)]" />
- ItemCount のカスタムスクリプトマッピングで計算結果を出力します。
<arcset attr="result.text">[_map.itemCount]arcset>
例2. レコード番号を付与する
Out のcol2 にItem レコードの連番を出力します。
In
xml version="1.0" encoding="UTF-8"
a
b
c
Out
xml version="1.0" encoding="UTF-8"
a
1
b
2
c
3
XML Map
XML Map で以下のように設定します。
- col2 のカスタムスクリプトマッピングでカウンタを加算して出力します。
<arcset item="_map" attr="i" value="[_map.i | def(0) | add(1)]" />
<arcset attr="result.text">[_map.i]arcset>
おわりに
この記事では、XML Map コネクタでの Mapping Context (_map )
アイテムの利用例をご紹介しました。
CData Arc では、Drag & Drop によるマッピングと式エディタで、項目の変換や操作に関する多くのケースをカバーできますが、変数を活用した計算や選択など複雑性を持つカスタムロジックが必要なマッピングシナリオではArcScript を利用したカスタムスクリプトが活用できます。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
arc.cdata.com
お試しいただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
www.cdata.com
この記事では CData Arc™ 2021 - 21.0.8054
を利用しています。
関連コンテンツ