CData Arc - XML Map(_map) レコードの行数を出力する、レコードに連番を付与する

by 色川穂高 | 2022年02月14日

f:id:irokawah:20220214143836p:plain

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"?>
<Items>
    <Item>
        <col1>1</col1>
        <col2>a</col2>
    </Item>
    <Item>
        <col1>2</col1>
        <col2>b</col2>
    </Item>
    <Item>
        <col1>3</col1>
        <col2>c</col2>
    </Item>
</Items>

Out

<?xml version="1.0" encoding="UTF-8"?>
<Items>
    <Item>
        <col1>1</col1>
        <col2>a</col2>
    </Item>
    <Item>
        <col1>2</col1>
        <col2>b</col2>
    </Item>
    <Item>
        <col1>3</col1>
        <col2>c</col2>
    </Item>
    <ItemCount>3</ItemCount>
</Items>

XML Map

XML Map で以下のように設定します。

  • Item 配下に新規コードスクリプト(カスタムスクリプト)を追加して、出現回数を加算する

出現回数の計算中は出力ノードには設定せず、計算用の新規コードスクリプト(カスタムスクリプト)を利用します。

f:id:irokawah:20220214143340p:plain

<arc:set item="_map" attr="itemCount" value="[_map.itemCount | def(0) | add(1)]" />

f:id:irokawah:20220214143350p:plain

  • ItemCount のカスタムスクリプトマッピングで計算結果を出力します。

f:id:irokawah:20220214143407p:plain

<arc:set attr="result.text">[_map.itemCount]</arc:set>

f:id:irokawah:20220214143417p:plain

例2. レコード番号を付与する

Out のcol2 にItem レコードの連番を出力します。

In

<?xml version="1.0" encoding="UTF-8"?>
<Items>
    <Item>
        <col1>a</col1>
    </Item>
    <Item>
        <col1>b</col1>
    </Item>
    <Item>
        <col1>c</col1>
    </Item>
</Items>

Out

<?xml version="1.0" encoding="UTF-8"?>
<Items>
    <Item>
        <col1>a</col1>
        <col2>1</col2>
    </Item>
    <Item>
        <col1>b</col1>
        <col2>2</col2>
    </Item>
    <Item>
        <col1>c</col1>
        <col2>3</col2>
    </Item>
</Items>

XML Map

XML Map で以下のように設定します。

  • col2 のカスタムスクリプトマッピングでカウンタを加算して出力します。

f:id:irokawah:20220214143435p:plain

<arc:set item="_map" attr="i" value="[_map.i | def(0) | add(1)]" />

<arc:set attr="result.text">[_map.i]</arc:set>

f:id:irokawah:20220214143445p:plain

おわりに

この記事では、XML Map コネクタでの Mapping Context (_map ) アイテムの利用例をご紹介しました。

CData Arc では、Drag & Drop によるマッピングと式エディタで、項目の変換や操作に関する多くのケースをカバーできますが、変数を活用した計算や選択など複雑性を持つカスタムロジックが必要なマッピングシナリオではArcScript を利用したカスタムスクリプトが活用できます。

皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。

arc.cdata.com

お試しいただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。

www.cdata.com


この記事では CData Arc™ 2021 - 21.0.8054 を利用しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。