こんにちは。 CData Software Japan Support Engineer の松本です。
今回は、SSIS の条件分割コンポーネントを使って、前回作成した更新処理を元に、差分更新と削除を行う方法についてご紹介します。
前回のあらすじ
前回は、挿入で作ったフローを改良して、更新と挿入ができるようにしました。
www.cdatablog.jp
差分更新対応
差分更新をするためには、更新しなくていいレコードを除いたものをUpsertに渡せば、差分で更新ができるようになります。 今回更新しなくていいレコードというのは、Value が同じレコードです。 実際の業務では、更新日時で判断する方法が良く用いられます。
差分更新
データの準備
SQL Server のデータ
レコードのValue を一か所変更したものと、新しいレコードを追加し、3レコードの内、この2レコードのみを反映します。
SQL Server
kintone
処理
Key
Value
RecordId
Key
Value
000000
値2
1
000000
値2
無視
000001
値4
3
000001
値3
更新
000002
値3
挿入
kintone からValue を取得
CData Kinton Source Editior
kintone からValue の値を取得するため、CData Kintone Source Editor を開き、前回選択したRecordId, key に加えてValue を選択します。
kintone 並べ替え
並べ替えエディター
新たに列が増えたので、並べ替えも追加した列出力されるよう、パススルーにチェックが入っていることを確認します。
マージ結合
マージ結合
マージ結合で、追加した列を追加します。 Key, Value は、両方のデータソースに存在しているので、出力の列名を変更しておきます。
条件分割
マージ結合とCData Kintone Destination(kintone Upsert) コンポーネント間の接続を削除し、代わりに条件分割コンポーネントを繋ぎます。
条件分割の追加
条件分割変換エディター画面を開きます。
条件分割変換エディター
条件分割コンポーネントは、リストに設定されている順序ごとに条件に一致するかを判定し、一致していれば出力名の出力にレコードを振り分けていきます。 今回は、RecordId が存在しないレコード(挿入)と、Value が異なっているレコード(更新)を選択するようにします。
条件でカラム名や演算子・関数などを入力する際は、上の項目をドラッグアンドドロップすることで入力できます。
CData Kintone Destination
条件分割の出力をCData Kintone Destination へ接続
条件分割コンポーネントには、「更新」と「条件分割の規定出力」という二つの出力があるので、「更新」をCData Kintone Destination に接続します。
差分更新に対応したデータフロー
差分更新の実行
データビューワーでデータを確認しながら、タスクを実行してみます。
マージ結合の出力データビューアー
更新のデータビューアー
3レコードのうち、更新・挿入を行う2レコードのみが、出力されていることが確認できます。
kintone アプリにデータが反映されている
削除
削除も、差分更新と考え方は同じです。
データの準備
SQL Server のデータ
Key="000001"のレコードを削除します。
SQL Server
kintone
処理
Key
Value
RecordId
Key
Value
000000
値2
1
000000
値2
無視
3
000001
値4
削除
000002
値3
4
000002
値3
無視
条件分割に削除するレコードの出力を追加
条件分割変換エディター
SQL Server 側にKey が存在しないレコードを削除という出力名に出力します。 また、削除するレコードは、SQl Server のValue がNULLになっていますが、更新の判定でValue 同士を比較する際、NULL が含まれているとエラーになるため、NULL のチェックを追加しています。
順序
出力名
条件
1
更新
ISNULL(RecordId) || (!ISNULL(Key)) && Value != Value_kintone
2
削除
ISNULL(Key)
CData Kintone Destination
CData Kintone Destination コンポーネントを追加
削除を行うため、もう一つCData Kintone Destination コンポーネントを追加します。
削除の出力を接続
CData Kintone Destination Editior
CData Kintone Destination Editor を開き、Action でDelete を選択し、マッピングでRecordId のみを選択します。
削除の実行
先ほどと同様に、データビューワーでデータを確認しながら、タスクを実行してみます。
マージ結合の出力データビューアー
削除のデータビューアー
削除対象となる、1レコードが出力されています。
kintone アプリにデータが反映されている
まとめ
条件分割コンポーネントを使って、データを振り分けることで、複数のデータソースから読み込んだデータを結合して、処理ごとに分けることができるようになります。
関連コンテンツ