Sansanからkintoneにデータを移行する方法

目的

Sansanの名刺データに含まれる会社と人についての情報を、kintoneの取引先とリードの2つのアプリに分けて移行したい。 

Sansanのデータを正とし、また既存のkintoneの取引先アプリ・リードアプリのデータに対して、既にあった場合は更新、なければ追加、つまりUPSERTを行いたいとします。

Sansan Sourceのテーブルは次のようになっています。

会社と名刺のデータそれぞれにIDが振られており、Sansan上で同じ会社であれば同じ会社IDとなります。会社と名刺のデータを分けた上で、それぞれのユニークなIDでUPSERTを行いたいのですが、kintoneのUPSERTは現在、kintone内部で自動的に割り振られるIDでのみ可能であるため、次のようにkintone Sourceを用いた上で、kintoneのIDもReckoner上に取り込むようにします。

Sansan Sourceを左側にした上で、各kintoneアプリと左結合を行い、kintone上にデータがあれば、そのIDが、なければNULLになるようにします。

その後、各テーブルを必要なカラムのみに投影を行って絞り、最後にkintoneの各アプリへUPSERTを行います。

このUPSERTの操作でkintoneの既存アイテムが更新される場合、会社名や名字・名前等のカラムは、Workflowを実行するたびに、すべてSansanの最新のデータで上書きされます。

会社名や名字・名前等の更新が不必要な場合は、SQLによってkintoneのデータがあった場合はそちらを優先するようにして、対象外にすることが可能です。

Workflow図

Source詳細

Sansan

上のように、取得したい状態は範囲を設定します。

kintone Source 取引先

kintone Source リード

上のような設定で、各kintoneのアプリのすべてのカラムを読み取るようにします。

Transform詳細

結合(Join) 取引先

結合(Join) リード

上のように、Sansan Sourceを左においた上で、kintone Sourceと左外部結合を行います。条件は、Sansan側の会社/名刺IDが、kintone側に保持しているSansanの会社/名刺IDと同一であればというものにします。

投影 取引先

上のように、Sansanのカラムを絞った上で、kintone側のアプリのカラムと同じ名前にします。

投影 リード

上のように、Sansanのカラムを絞った上で、kintone側のアプリのカラムと同じ名前にします。

Sink 詳細

kintone Sink 取引先

上のように、取引先アプリに対して、kintoneの内部IDであるRecordIdをKeyにした上でUPSERTを行います。

取引先アプリのスキーマは、次にようになっています。各フィールドの型は、すべて「文字列(1行)」になっています。

kintone Sink リード

上のように、リードアプリに対して、kintoneの内部IDであるRecordIdをKeyにした上でUPSERTを行います。

リードアプリのスキーマは、次にようになっています。各フィールドの型は、すべて「文字列(1行)」になっています。