こんにちは。CData Software Japan の杉本です。この記事では、CData Arc のデータソース系コネクタで利用できる「Lookup アクション」と「Lookup Stored Procedure アクション」と「Execute Stored Procedure アクション」をご紹介します。
あるデータソースから別のデータソースにデータを連携する途中に、マスタテーブルなどにある名称や金額、コードなどを検索・取得したい場面は多いかと思います。またId やコードの値に応じて別のマスタテーブルやオブジェクトに保持されている名前を取得・変換する、などのシナリオは、どのような業種・業務でも頻繁に必要になるかと思います。特にSaaS ではレコードの一意識別子(レコードのId など)がサービス側で自動採番されることが多いですが、データ更新する際など連携元で保持する値を基にSaaS の既存レコードの識別子(Id など)を取得したいケースは多いと思います(Email アドレスを条件にSalesforce のLead を検索して該当するLead のId を取得したい、など)。CData Arc の「Lookup アクション」は、対象のデータソースから指定した条件に合致する単一の値を検索・取得し、その値をフロー処理中のメッセージに挿入します。「Lookup アクション」は、SQL Server / Oracle / DB2 等の Database Connectors や、Salesforce / Kintone / Shopify 等の多くの Application Connectors 、CData Drivers とシームレスに連携できる CData コネクタ で利用することができます。
まずkintone 側に製品マスタ、PostgreSQL 側に製品明細マスタが存在するようなシナリオを考えてみます。そしてkintone コネクタのSelect アクションを追加して、製品マスタのデータを取得するように構成します。後述のLookup アクションでテストが出来るように「XML 出力をプレビュー」よりサンプルデータを保存します。そして次にPostgreSQL コネクタを追加して、Lookup アクションを選択します。追加したPostgreSQL コネクタとkintone コネクタを以下のようにフローを繋げます。追加したkintone コネクタのLookup アクションを開いて、具体的な設定方法についてご案内します。接続設定を選択した後、サンプルファイルを選択します。テーブルとカラムから取得対象のデータを選択します。今回はPostgreSQL 側の製品明細マスタから全てのカラムを取得するように構成します。アウトプットディスティネーションを選択します。XPath を指定した場合は、インプットファイルの指定した箇所に取得した結果が子の階層として差し込まれる動作となります。なおヘッダーを選択した場合は、取得した項目がメッセージヘッダーに差し込まれる動作となります。レコード制限では取得した結果が複数となる場合の挙動を設定できます。選択可能な値は「制限なし」、「最初の結果を使用」、「カスタム制限」の三つです。そしてフィルタ条件ではインプットファイルのデータを元に、取得条件を構成することが可能です。例えば以下のようにフィルタ条件を構成すると、インプットファイルの製品コードと一致するデータをPostgreSQL の製品明細マスタから取得する動作となります。最後に「Lookup をテスト」から設定した内容のテストを行うことが可能です。アウトプットファイルをフォーマットした内容が以下のXML となります。PostgreSQL の製品明細マスタから製品コードが一致するデータが取得されていることを確認出来ます。
<?xml version="1.0" encoding="UTF-8"?> <Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <製品マスタ> <RecordId>1</RecordId> <AppId>513</AppId> <Revision>2</Revision> <作成日時>2025-08-26T14:23:00.0000+09:00</作成日時> <更新日時>2025-08-26T14:23:00.0000+09:00</更新日時> <製品コード>001</製品コード> <製品名>製品1</製品名> <製品明細マスタ> <製品コード>001</製品コード> <価格>1500</価格> <在庫数>70</在庫数> </製品明細マスタ> </製品マスタ> </Items>
設定画面の下部に高度な設定があり、こちらから追加の設定を行うことが可能です。「一致するレコードが見つからない場合のアクション」ではフィルタ条件に一致するデータが存在しない場合の挙動を設定します。設定可能な値は「失敗」、「空文字列を使用」、「Null 値を使用」の三つとなります。
Lookup アクションではインプットファイルに複数のレコードが存在した場合、レコード単位でLookup アクションが実行されます。SaaS 系のデータソースによってはAPI アクセスの制限がある場合などもあり、そういった場合にはキャッシュ機能がご活用いただけます。.NET 版ではキャッシュプロバイダーにデフォルトでSQLite 指定されており、以下のように接続文字列を指定します。クロスプラットフォーム版ではキャッシュプロバイダーにデフォルトでDerby が指定されており、以下のように接続文字列を指定します。
「Lookup Stored Procedure アクション」は「Lookup アクション」と同様の動作を実現しますが、文字通り実行されるのはストアドプロシージャとなります。ストアドプロシージャの結果をフロー処理中のメッセージに挿入します。
PostgreSQL 側に以下のようなストアドプロシージャを準備します。製品コードをインプットパラメータとして、製品明細マスタを検索して、一致するデータを返す動作となります。
-- 製品コードで製品明細マスタを検索するストアドプロシージャ CREATE OR REPLACE FUNCTION search_product_by_code( input_product_code VARCHAR ) RETURNS TABLE ( 製品コード VARCHAR, 価格 INTEGER, 在庫数 INTEGER ) LANGUAGE plpgsql AS $$ BEGIN -- 製品コードが一致するレコードを返す RETURN QUERY SELECT p.製品コード, p.価格, p.在庫数 FROM public.製品明細マスタ p WHERE p.製品コード = input_product_code; -- レコードが見つからない場合の処理 IF NOT FOUND THEN RAISE NOTICE '製品コード % に該当する製品が見つかりませんでした', input_product_code; END IF; RETURN; END; $$;
そして次にPostgreSQL コネクタを追加して、Lookup Stored Procedure アクションを選択します。追加したPostgreSQL コネクタとkintone コネクタを以下のようにフローを繋げます。追加したPostgreSQL コネクタのLookup Stored Procedure アクションを開いて、具体的な設定方法についてご案内します。設定のいくつかはLookup アクションと同様です。まずは接続設定を選択した後、サンプルファイルを選択します。実行するストアドプロシージャを選択して、インプットパラメータに渡す値を選択します。アウトプットディスティネーションを選択して、アウトプットする内容として「アウトプットパラメータ」と「結果セット」が選択出来ます。なお結果セットはさまざま構造のデータを返す場合もあるため、ヘッダーには追加出来ません。そして「ストアドプロシージャをテスト」から設定した内容のテストを行うことが可能です。アウトプットファイルをフォーマットした内容が以下のXML となります。Lookup アクションと同様にPostgreSQL の製品明細マスタから製品コードが一致するデータが取得されていることを確認出来ます。
<?xml version="1.0" encoding="UTF-8"?> <Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <製品マスタ> <RecordId>1</RecordId> <AppId>513</AppId> <Revision>2</Revision> <作成日時>2025-08-26T14:23:00.0000+09:00</作成日時> <更新日時>2025-08-26T14:23:00.0000+09:00</更新日時> <製品コード>001</製品コード> <製品名>製品1</製品名> <製品明細マスタ> <result_set rs="1"> <製品コード>001</製品コード> <価格>1500</価格> <在庫数>70</在庫数> </result_set> </製品明細マスタ> </製品マスタ> </Items>
ストアドプロシージャを実行するアクションとして、「Lookup Stored Procedure アクション」以外に「Execute Stored Procedure アクション」が選択可能です。両者の違いとしては「Lookup Stored Procedure アクション」では実行結果をインプットファイルに差し込むのに対して、「Execute Stored Procedure アクション」では結果を差し込むのではなく、実行結果から新たなアウトプットファイルを作成します。
PostgreSQL コネクタを追加して、Execute Stored Procedure アクションを選択します。
追加したPostgreSQL コネクタとkintone コネクタを以下のようにフローを繋げます。今回はPostgreSQL コネクタとKintone コネクタの間にXMLMap コネクタが必要となります。追加したPostgreSQL コネクタのExecute Stored Procedure アクションを開いて、具体的な設定方法についてご案内します。接続設定を選択した後、実行するストアドプロシージャを選択します。次にXMLMap を開き、マッピングを行います。ソースの「製品コード」を宛先の「input_product_code」にマッピングを行います。そして「Execute Stored Procedure アクション」に戻り「ストアドプロシージャをテスト」から設定した内容のテストを行うことが可能です。「input_product_code」に「001」と入力して、テストを行った結果は以下となります。「Lookup Stored Procedure アクション」とは異なり、「Execute Stored Procedure アクション」では実行結果からアウトプットファイルを作成して、インプットファイルを置き換えていることが分かります。
この記事では、CData Arc のデータソース系コネクタで利用できる「Lookup アクション」と「Lookup Stored Procedure アクション」と「Execute Stored Procedure アクション」をご紹介しました。CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。CData Arc | データ連携、EAI、マネージドファイル転送(MFT)、電子データ交換(EDI)のオールインワンツール製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。CData - サポートフォーム
この記事では CData Arc™ 2025 - 25.2.9364.0 を利用しています