Reckonerでkintoneのアプリ同士を相互に同期する方法

kintoneで複数のアプリを運用している際、お互いにデータ同期させたい要望があります。今回は更新日時の新しいデータを正として、Reckonerでデータ同期させる方法を記載します。

サンプル概要

kintoneの2つのアプリ、「アプリA」と「アプリB」があり、この中に入っているデータを同期します。2つのアプリのアプリのスキーマは同一であり、次のとおりです。

「文字列」「担当者」カラムの型はkintone上の「文字列(1行)」であり、「追加更新日時」カラムの型は、kintone上の「日時」です。

2つのアプリ内に入っているデータで、「担当者」と「追加更新日時」のデータが同一であった場合は、同じデータとして扱い、kintone内部で自動的にアイテム更新時に更新される「更新日時」カラムの日時が新しい方を正とし、「文字列」カラムを新しい方のデータに合わせた上で、2つのアプリへ書き込みます。

実行前のアプリAが次の状態で、

実行前のアプリBが次の状態のとき、

「担当者」と「追加更新日時」が同じなため、同じデータとして扱われる「担当者」が「田中太郎」のデータの、更新日時がアプリAよりもアプリBの方が新しい場合、アプリBのデータが優先されます。

このため、実行後のアプリAの状態は次のようになり、

実行後のアプリBの状態は次のようになります。

Reckoner ワークフロー概要

Reckonerで作成したワークフローの全体像は以下のとおりです

設定詳細: 転送元アプリA

転送元のkintoneアプリAの設定は以下のように設定しました。
(事前に登録したkintone接続情報を選択後、すべてのカラムを選択するようなクエリを記述します)

詳細設定: 転送元アプリB

同様にkintoneアプリBの設定は以下のように設定しました。

詳細設定: 結合(JOIN)アプリA

次にkintoneアプリAから抽出したデータに対してkintoneアプリBから抽出したデータを結合(JOIN)します。この時、同じデータとして扱いたい条件である「担当者」と「追加更新日時」が同一なもので左結合し、UPSERTに必要なkintoneの自動採番IDや、各アプリのデータをSELECTします。

詳細設定: 結合(JOIN)アプリB

次にkintoneアプリBから抽出したデータに対してkintoneアプリAから抽出したデータを結合(JOIN)します。こちらも同様に、同じデータとして扱いたい条件である「担当者」と「追加更新日時」が同一なもので左結合し、UPSERTに必要なkintoneの自動採番IDや、各アプリのデータをSELECTします。

設定詳細: SQL文字列カラム計算アプリA/B

「SQL 文字列カラム計算 アプリA」「SQL 文字列カラム計算 アプリB」は、表示名は違いますが、クエリは同一で、次のとおりです。

SELECT *, IF(IFNULL(アプリA更新日時, to_timestamp('1970-01-01T00:00:00Z')) > IFNULL(アプリB更新日時, to_timestamp('1970-01-01T00:00:00Z')), アプリA文字列, アプリB文字列) AS 文字列 FROM linked_table 

それぞれのアプリの更新日時が新しい方の「文字列」カラムのデータを、「文字列」カラムに入れています。

設定詳細: 投影 DROPアプリA/B

「投影 DROP アプリA」「投影 DROP アプリB」は、表示名は違いますが、それ以外の設定は同一で、上のとおりです。
転送するために不要となったカラムを落としています。

設定詳細: 転送先アプリA/B

上のように、正しい接続情報を選択した上で、各アプリに対して、kintone内部で自動採番されるIDである「RecordId」をキーにした上でUPSERTを行います。

以上で2つのkintoneアプリをデータ同期させることができました

Reckoner(レコナー)について

Reckoner(レコナー)は、スリーシェイクが提供するオンプレミスからクラウドサービスまで、様々なデータを連携させることが可能なクラウドネイティブなデータ連携プラットフォーム(Data Integration Platform as a Service)です。
データ整備に欠かせないETL/ELTやデータパイプラインなどをノンプログラミングで実現し、従来エンジニアが必要とされていた開発・運用コストを大幅に削減できます。
https://www.reckoner.io/

ETLツールについて詳しく知りたい、ETLツールの選び方を知りたいという方はこちらの「ETLツールとは?選び方やメリットを解説」をぜひご覧ください。

ブログ一覧へ戻る