キーカラムには重複のないカラムを設定する必要があります。
キーカラムがユニークではない場合、ジョブは成功しますが、以下のような挙動をしますのでご注意ください。
キーカラムに phone_number を設定し、増分基準カラムに updated_at を設定しました。
| name | phone_number | address | birth_date | updated_at | trocco_valid_from | trocco_valid_to | trocco_is_current |
|---|---|---|---|---|---|---|---|
| 山田太郎 | 090-1111-2222 | 東京都 | 1975-01-01 | 2026-02-01 10:00:00 UTC | 2026-02-17 06:00:00 UTC | null | true |
| 山田次郎 | 090-1111-2222 | 東京都 | 2005-09-01 | 2026-02-01 10:00:00 UTC | 2026-02-17 06:00:00 UTC | null | true |
| 佐藤花子 | 080-3333-4444 | 大阪府 | 1988-05-12 | 2026-02-01 10:00:00 UTC | 2026-02-17 06:00:00 UTC | null | true |
| 鈴木一郎 | 070-5555-6666 | 愛知県 | 1992-07-20 | 2026-02-01 10:00:00 UTC | 2026-02-17 06:00:00 UTC | null | true |
この状態で、2行目の「山田次郎」の住所を「東京都」→「神奈川県」に変更すると以下のような結果になります。
「山田次郎」と「山田太郎」は同じ phone_number が設定されており、キーカラムの値がユニークではありません。
そのため、「山田次郎」の address に変更があり updated_at が更新された場合、変更を検知して phone_number を基にレコードを新規追加します。
その結果、更新のなかった「山田太郎」についても、新規レコードとして追加されます。
これは、増分基準カラム(updated_at)に変化のあったキーカラム単位で履歴を生成する仕様のためです。
| name | phone_number | address | birth_date | updated_at | trocco_valid_from | trocco_valid_to | trocco_is_current |
|---|---|---|---|---|---|---|---|
| 山田太郎 | 090-1111-2222 | 東京都 | 1975-01-01 | 2026-02-01 10:00:00 UTC | 2026-02-05 06:00:00 UTC | 2026-02-12 06:00:00 UTC | false |
| 山田次郎 | 090-1111-2222 | 東京都 | 2005-09-01 | 2026-02-01 10:00:00 UTC | 2026-02-05 06:00:00 UTC | 2026-02-12 06:00:00 UTC | false |
| 佐藤花子 | 080-3333-4444 | 大阪府 | 1988-05-12 | 2026-02-01 10:00:00 UTC | 2026-02-05 06:00:00 UTC | null | true |
| 鈴木一郎 | 070-5555-6666 | 愛知県 | 1992-07-20 | 2026-02-01 10:00:00 UTC | 2026-02-05 06:00:00 UTC | null | true |
| 山田太郎 | 090-1111-2222 | 東京都 | 1975-01-01 | 2026-02-01 10:00:00 UTC | 2026-02-12 06:00:00 UTC | null | true |
| 山田次郎 | 090-1111-2222 | 神奈川県 | 2005-09-01 | 2026-02-10 10:00:00 UTC | 2026-02-12 06:00:00 UTC | null | true |
SCD Type2をご利用の際は、必ずキーカラムが一意になるよう設計してください。
対応方法として2種類あります。
- キーカラムをユニークにする
phone_number+birth_dateの組み合わせでユニークにする- 一意となるカラム(
idなど)を用意する
- 事前に重複チェックを行う
コメント
0件のコメント
記事コメントは受け付けていません。