こんにちは。CData Software Japan の色川です。
CData Arc のデータソース系コネクタでは、データ更新のアクションとして「Upsert アクション」が搭載されています。
Arc の「Upsert アクション」は「指定した項目を条件に既存データを検索し、データが存在していれば更新(Update)、存在していなければ追加(Insert)という判断と処理を、Arc のコネクタの中で実行」してくれる、利便性の高い機能です。データソース側でUpsert 用の機構が用意されているケースはとても限られており、そういった機構が用意されていないデータソースに対して既存データの有無に依ってインテリジェントに処理を実施してくれるCData Arc のUpsert アクションは多くの場面で重宝します。
Arc の「Upsert アクション」において単一項目を検索条件に構成する設定はとても簡単です。Upsert アクションでは検索条件にする項目により一意でレコードを判断できる必要がありますが、例えば以下の設定ではメールアドレスを検索条件に既存データを検索し、同じメールアドレスを持つデータが存在していれば更新(Update)を、存在していなければ追加(Insert)するように設定しています。
「Upsert アクション」を利用する多くのケースでは、単一項目を検索条件にUpsert アクションを構成できる事が多いと思いますが、データの構成や内容に依っては「取引先コード」と「商品コード」のように「レコードを一意で特定するために複数の項目が必要で、その複数項目を検索条件にしてUpsert アクションを構成したいケース」もあるかと思います。
Arc の「Upsert アクション」は、そのようなケースでも活用できるように複数項目を検索条件にしたUpsert アクションを構成する事が可能です。
この記事では、Arc の「Upsert アクション」で、任意の複数項目を条件にしてUpsert を構成する方法を、とても人気の高いデータソースであるkintone を例にご紹介します。
Upsert アクション
前述の通り、CData Arc の「Upsert アクション」は「指定した項目を条件に既存データを検索し、データが存在していれば更新(Update)、存在していなければ追加(Insert)という判断と処理を、Arc のコネクタの中で実行」してくれる、利便性の高い機能です。
https://cdn.cdata.com/help/AZJ/jp/mft/CData-Upsert.html
SaaS ではオブジェクトの主キーに相当する情報がSaaS 側で自動的に生成・付与されるアーキテクチャも多いかと思います。kintone の場合、RecordId がそれに当たりますが、RecordId に相当する情報を持たない外部データをkintone に登録及び更新したいような場合には、RecordId ではなく他の一意性がある項目を条件にUpsert を構成したいケースはかなり多いのではないでしょうか。例えば「"顧客リスト"アプリに対して、メールアドレスを条件にUpsert したい」等は典型的な例かも知れません。こういう場面で、Arc のUpsert アクションは活躍します。
Upsert アクションの振舞いを少し詳しくご紹介すると、Arc ではデータソース側のkey 情報などをメタデータから自動的に取得しますが、Upsert アクションでは「次でUPSERT」で指定した項目を条件にSelect クエリを発行し、レコードを判断できるkey 情報を取得します。取得できた場合(指定した項目で一致するレコードが存在した場合)は、取得したkey を条件にUpdate クエリを発行し、取得できなかった場合(指定した項目で一致するレコードが存在しなかった場合)はInsert クエリを発行する、と言った仕組みです。
複数項目を検索条件にしたUpsert アクション
複数項目を検索条件にしたUpsert アクションを構成するときは「次のクエリを実行してUPSERT キーを選択」において「Upsert キー(レコードを判断できるkey 情報)を取得するための複数項目を条件にしたクエリ」を記述する事で設定する事ができます。
例えば、Upsert を実施したい「取引先別商品別」アプリがあるとして、そのレコードを一意に特定するためには「取引先コード」と「商品コード」が必要な場合、「次のクエリを実行してUPSERT キーを選択」へ下記のように「入力データの取引先コードと商品コードを条件にUpsert を判断するためのRecordId が取得できるクエリ」を指定します。「入力値」はインプットメッセージファイルに含まれる要素を「@要素名」で指定します。
Select RecordId From `取引先別商品別` Where `取引先コード` = @取引先コード And `商品コード` = @商品コード
上記のような仕組みで実現されている機構のため、Upsert 対象のレコードを一意に判断するための項目が2 つ以上指定したいときも応用は簡単です。
おわりに
この記事では、Arc の「Upsert アクション」において、任意の複数項目を条件にしてUpsert を構成する方法を、とても人気の高いデータソースであるkintone を例にご紹介しました。
Arc の「Upsert アクション」は「指定した項目を条件に既存データを検索し、データが存在していれば更新(Update)、存在していなければ追加(Insert)という判断と処理を、Arc のコネクタの中で実行」してくれる、利便性の高い機能です。Upsert に相当する更新ロジックを実現するためには様々な考慮点が必要になりますが、それらの多くをArc のUpsert アクションはサポートしてくれます。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)
製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
CData Software Japan - Support Form
この記事では CData Arc™ 2023 - 23.2.8630.0 を利用しています。
関連コンテンツ