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