データ更新

ターゲットベースの変更データキャプチャ (CDC) の使用

Objective

After completing this lesson, you will be able to ターゲットベースの CDC を使用

ターゲットベース変更データキャプチャ (CDC)

ソースベースの CDC は、ソーステーブルを評価して変更内容を特定し、変更された行のみを抽出してターゲットテーブルにロードします。一方、ターゲットベースの CDC は、ソースからすべてのデータを抽出し、ソース行とターゲット行を比較してから、変更された行のみを新しいサロゲートキーを使用してターゲットにロードします。

ソースベースの情報が制限されている場合は、ターゲットベースの CDC を使用します。

ターゲットベースの変更データキャプチャを実装するには、Table_Comparison トランスフォームを使用する必要があります。その他のトランスフォームは、データフローの完了に役立ちます。

ターゲットベースの CDC トランスフォーム

ターゲットベースの CDC がサポートされる 3 つの Data Services トランスフォーム:

トランスフォーム内容説明
テーブル比較2 つのデータセットを比較し、INSERT またはUPDATE としてフラグ設定された行を持つデータセットとしてデータセット間の差異を生成します。
履歴保存UPDATE フラグが設定された行を UPDATE および INSERT に変換し、元の値がターゲットで保持されるようにします。更新されたデータを検索するカラムを指定します。
キー生成テーブルで指定した既存のキーに基づく値から開始して、ソースデータの新しいキーを生成します。

ターゲットベースの変更データキャプチャプロセスのステップの概要を以下の図に示します。

履歴を保持するターゲットベース CDC

以下を含むデータフローを作成して、履歴を保持します。

  • 評価対象の行を含むソーステーブル。
  • ソースから列をマッピングする Query トランスフォーム。
  • ソーステーブル内のデータとターゲットテーブルのデータを比較して、変更内容を特定する Table Comparison トランスフォーム。
  • History Preserving トランスフォーム。値が変更された列に基づいて、特定の UPDATE 行を INSERT 行に変換します。このトランスフォームでは、最初の行が上書きされるのではなく、ターゲットに 2 番目の行が生成されます。
  • 更新された行に対して INSERT というフラグが付けられた新しいキーを生成する Key Generation トランスフォーム。
  • 行を受信するターゲットテーブル。ターゲットテーブルをテンプレートテーブルにすることはできません。

Table Comparison トランスフォーム

Table Comparison トランスフォームで最後にターゲットが更新されてから発生した変更を検出および転送できます。このトランスフォームでは、2 つのデータセットが比較され、INSERT または UPDATE としてフラグが付けられた行がデータセットとして生成されます。

入力、比較、および出力

入力テーブルと比較テーブルが比較されます。  入力データセットの 1 次キー値に基づいて、比較テーブルからローが選択されます。次に、両方の入力のスキーマに存在する列が比較されます。

入力データセットに NORMAL フラグを設定する必要があります。

出力データセットには、テーブル間の差異を構成する行のみが含まれます。出力データセットのスキーマは、比較テーブルのスキーマと同じです。

あるテーブルの列に日付データ型があり、もう一方のテーブルに日付データ型がある場合、トランスフォームではデータの日付セクションのみが比較されます。列のデータ型を time および datetime にすることもできます。その場合、Data Services では、データの時刻部分のみが比較されます。

Table_Comparison トランスフォームの結果

入力データセットの行ごとに、トランスフォームから以下の 3 つの結果が考えられます。

  • 行は無視されます

    入力データセットの 1 次キー値が比較テーブルの値と一致しますが、比較ではローの値に対する変更は示されません。

  • INSERT 行が生成されます。

    入力データセットの 1 次キー値が比較テーブルの値と一致しません。トランスフォームによって、入力データセット行の値を含む INSERT 行が生成されます。

    入力データセットに存在しない列が比較テーブルにある場合、トランスフォームによってこれらの列が出力スキーマに追加され、NULL 値が入力されます。

  • UPDATE 行が生成されます。

    入力データセットの 1 次キー値が比較テーブルの値と一致しています。非キー比較列の値は、入力データセットと比較テーブルの対応する行で異なります。

    トランスフォームは、入力データセット行の値を使用して UPDATE 行を生成します。

    入力データセットに存在しない列が比較テーブルにある場合、トランスフォームによってこれらの列が出力スキーマに追加され、比較テーブルの値が入力されます。

  • DELETE 操作はデフォルトでは生成されませんが、比較テーブルから削除された行を検出オプションを選択して、比較テーブルから抽出することができます。

Table_Comparison トランスフォームオプション

Table_Comparison トランスフォームオプション

オプション説明
テーブル名ソーステーブルの完全修飾名を指定します。テーブル名は datastore.owner.table として表されます。データストアは、Data Services がキーソーステーブルにアクセスするために使用するデータストアの名前です。 所有者は、テーブルに関連付けられたデータベースの種類によって異なります。
生成するキー列比較テーブルの列を指定します。比較テーブルに特定の 1 次キー値を持つ行が複数ある場合、このトランスフォームはその行を、これらの行の最大生成キー値と比較し、他の行を無視します。
入力に重複キーが含まれていますプライマリキー値が重複している入力ローに対するサポートを提供します。
比較テーブルから削除された行を検出ソースから削除された行を識別します。
比較方法行ごとの選択、キャッシュされた比較テーブル、またはソートされた入力を使用して、比較テーブルにアクセスします。
1 次キー列の入力各行を一意に識別する入力データセットの列を指定します。これらの列は、同じ列名およびデータ型で比較テーブルに存在する必要があります。
比較する列入力スキーマからこのボックスにドラッグする列のサブセットのみを比較することで、パフォーマンスが向上します。列が一覧表示されない場合、比較テーブルにも含まれている入力データセットのすべての列が比較列として使用されます。

History Preserving トランスフォーム

History Preserving トランスフォームには、独自のデータ入力要件、データ出力結果、およびオプションがあります。

履歴保存データセット

  • 入力データセット

    このデータセットは、同じデータの 2 つのバージョンを比較した結果です。新しいバージョンから変更されたデータを含む行には UPDATE 行フラグが設定され、新規バージョンからの新規データには INSERT 行としてフラグが設定されます。Table_Comparison トランスフォームでオプションが設定されている場合は、DELETE フラグが設定された行を含めることができます。

  • 出力データセット

    このデータセットには、INSERT または UPDATE のフラグが付けられた行が含まれています。

History_Preserving トランスフォームオプション

履歴保存オプション

History Preserving トランスフォームでは、次の表に示すオプションが提供されます。

オプション説明
有効開始日付ソーススキーマから日付または日時列を指定します。ターゲットが有効開始日を使用してデータの変更を追跡する場合は、有効開始日付列を指定します。
有効期限書式 YYYY.MM.DD で日付値を指定します。有効終了日付を有効開始日付と同じにすることはできません。
カラムテーブル1 次キーが同じ行のセットから現在有効な行を識別するソーススキーマの列を指定します。フラグ列は、特定の一次キーについて、行がターゲット内の最新データであるかどうかを示します。
値を設定フラグ設定列の値と同じデータ型の値を出力する式を定義します。この値を使用して、現在のフラグ列を更新します。ターゲットの新しい行では、既存の行の履歴が保持されます。
値リセットリセットフラグ列の値と同じデータ型の値を出力する式を定義します。ターゲットの行に 1 つ以上の比較列の変更が含まれる場合に、ターゲット内の既存の行の現在のフラグ列を更新するには、この値を使用します。
削除ローを更新ローとして保持ターゲットの UPDATE 行に DELETE 行を変換します。以前に Valid from および Valid to の値を設定していた場合、このオプションでは Valid to の値が実行日付に設定されます。このオプションを使用して、最初に Table Comparison トランスフォームによって完全なデータセットを提供することで、緩やかに変化するディメンションを維持します。Table Comparison トランスフォームで、比較テーブルから削除された行を検出オプションを選択します。
比較する列変更と比較する入力データセット内の列を一覧表示します。
  • 各バージョンの指定された比較列の値が一致する場合、トランスフォームは行に UPDATE というフラグを付けます。前のバージョンの行と日付とフラグの情報が更新されます。
  • 各バージョンの値が一致しない場合、トランスフォームからの出力時に最新バージョンの行に INSERT というフラグが付けられます。これにより、新しい値を含む新しい行が倉庫に追加されます。

    non-history の更新は、カラムが自然キーに対して実行される場合はローのすべてのバージョンを更新しますが、更新が生成されたキーにある場合にのみ最新バージョンを更新します。

Key Generation トランスフォーム

Key Generation トランスフォームでは、key_generation 関数と同じ方法でターゲットにデータセットを挿入する前に、新しいキーが生成されます。

テーブルで人工キーを生成する必要がある場合、このトランスフォームでは、テーブルから既存の最大キー値が検索され、その値が開始値として使用されて新しいキーが生成されます。トランスフォームでは、生成されたキー列が入力スキーマの一部であることを想定しています。

たとえば、History Preserving トランスフォームでは、ウェアハウスに追加する行が作成され、これらの行の 1 次キーはウェアハウスにすでに存在する行と同じです。この場合、生成されたキーを倉庫テーブルに追加して、同じ一次キーを持つこれら 2 つの行を区別します。

Key_Generation データセット

  • 入力データセット

    このデータセットは、同じデータの 2 つのバージョンを比較した結果です。新しいバージョンから変更されたデータには UPDATE 行フラグが設定され、新しいバージョンからの新しいデータには INSERT 行としてフラグが設定されます。

  • 出力データセット

    このデータセットは入力データセットと重複しており、INSERT というフラグが付けられた入力行の生成済みキー列にキー値が追加されます。

Key Generation トランスフォームオプション

次の表に、Key Generation トランスフォームで使用できるオプションの概要を示します。

オプション説明
テーブル名最大既存キーの決定元となるキーソーステーブルの完全修飾名を指定します。このテーブルは、リポジトリにすでにインポートされている必要があります。テーブル名は datastore.owner.table として表されます。ここで、データストアは、Data Services がキーソーステーブルにアクセスするために使用するデータストアの名前で、所有者はテーブルに関連付けられたデータベースの種類によって異なります。
生成するキー列既存のキー値を含むキーソーステーブルの列を指定します。入力データセットに同じ名前の列が存在する必要があります。新しいキーがこの列に挿入されます。
増分値生成されたキー値の間隔を示します。

試してみる

ターゲットベースの変更されたデータキャプチャデータフローの実装について説明します。