コンテンツにスキップ

挿入と更新を1つの操作にまとめたものです。照合キーとして指定した1つ以上の列に基づいて動作します。ソースの各行について、ターゲットに一致する行(同じキー値)があればそれを更新し、なければ新しい行を挿入します。

新しいレコードと既存レコードの修正の両方を含む増分データストリームがある場合に使用します。たとえば、売上の更新、従業員レコードの変更、または「常に最新の状態を反映する」シナリオです。照合列は慎重に指定してください。キー値が同じで他の値が異なる行は上書きされるため、キーの選択を誤ると、気づかないうちにデータが破損する可能性があります。

ターゲット(既存)id 1 · Aid 2 · Bソース(増分)id 2 · B′id 3 · Cidで照合結果id 1 · A保持id 2 · B′更新id 3 · C挿入
アップサートは、照合キーに基づいてソースをターゲットにマージします。既存のキーは更新され(id 2 → B′)、新しいキーは挿入されます(id 3)。キーは慎重に選んでください。キーを共有する行は上書きされます。

ソースとターゲット

ソーステーブルとターゲットテーブルを設定するには、まず ソーステーブル のドロップダウンメニューから、抽出元のデータテーブルを選択します。次に、ターゲットテーブル のドロップダウンから、ターゲットテーブルとして既存のテーブルを選択します。

ソーステーブルのデータの選択

Section titled “ソーステーブルのデータの選択”

Table Upsert

データマッパーを使用して、ソースデータの列をターゲットのデータテーブルにマッピングします。

ソースを検査 メニューボタンを使用すると、ソースからターゲットへ列をマッピングする方法が追加で利用できます。

  • 両方のマッピングテーブルを入力: ソースのデータテーブルのすべての値をターゲットのデータテーブルに反映します。これがデフォルトです。
  • ソースマッピングテーブルのみを入力: ソースのデータテーブルのすべての値のみをマッピングします。ソースの列構造が変更されたとき、既存のワークフローを変更する場合に便利です。
  • ターゲットマッピングテーブルのみを入力: すべての値をターゲットのデータテーブルにのみ反映します。

ソース列とターゲット列のオプションだけでは足りない場合は、いくつかの方法で他の列をターゲットのデータテーブルに追加できます。

  • すべてを反映 は、すべてのソース列を、すでに存在するかどうかにかかわらず、ターゲットのデータテーブルに挿入します。
  • 選択を反映 は、選択したソース列のみを挿入します。
  • ターゲット側を右クリックして 行を挿入 を選択すると、現在選択している行のすぐ上に行を挿入します。
  • ターゲット側を右クリックして 行を追加 を選択すると、ターゲットのデータテーブルの末尾(右端)に行を挿入します。

ターゲットのデータテーブルから列を削除するには、対象の列を選択し、右クリックして 削除 を選択します。

ターゲットのデータテーブルで列を並べ替えるには、対象の列を選択します。次のどちらかを使用できます。

  • 一括移動の矢印: 右上の矢印から、目的の移動オプションを選択します
  • コンテキストメニュー: 右クリックして、先頭へ移動、上へ移動、下へ移動、末尾へ移動 のいずれかを選択します。

結果を重複のないレコードのみに絞り込む

Section titled “結果を重複のないレコードのみに絞り込む”

重複のないレコードのみを返すには、重複排除 メニューオプションを選択します。ソースの各列にチェックボックスが表示されます。対応する列の横のボックスをオンにすると、その列に基づいて重複のない結果のみが返されます。

状況によっては、代わりに集計の使用を検討してください。

重複排除の処理では、最初に見つかった一意のレコードが保持され、残りは破棄されます。実行間で一貫性が重要な場合は、データに並べ替えを適用することをお勧めします。

ターゲット列のグリッドには、ターゲット列の名前のすぐ右に 更新キー 列があります。行を識別する列にチェックを入れます。キー値がターゲットにすでにある行と一致するソース行はその行を更新し、それ以外のソース行は挿入されます。

最初はすべての列にチェックが入っているため、キーに含まない列のチェックを外してください。更新キーの設定がない列(入力によって追加されたばかりの列や、設定なしでAPI経由で保存された列)は、キーとして扱われます。少なくとも1つの列にチェックを残す必要があります。

Table Data Filters

柔軟性を最大限に高めるため、データフィルターはソースデータとターゲットデータの両方で使用できます。データセットが大きい場合は、ソース側で行を絞り込んでおくと、残りの処理を小さなデータセットに対して実行できるため、特に効果的です。

データのサブセットを選択

このフィルタータイプでは、指定した条件に基づいて、受信するソースデータをフィルター処理できます。

結果データにセカンダリフィルターを適用

このフィルタータイプでは、変換後の結果データに対して、指定した条件に基づくフィルターを適用できます。 変換後の結果にフィルターを適用できるため、複雑な計算、集計、ウィンドウ関数の結果に基づいて行を除外できます。

最終データテーブルのスライス(制限)

行のスライス機能では、範囲と開始位置に基づいて、結果セットの行数を制限できます。

フィルター構文

フィルター構文には Python SQLAlchemy を使用します。これは他の式と同じ構文です。

式の例と式関数については、式のセクションを参照してください。

  • 更新キーが少なくとも1つあること。 ない場合、保存は At least one target column must be marked as Update Key. というメッセージで拒否されます。
  • マッピングが既存のターゲットテーブルと一致していること。 ターゲットテーブルがすでに存在する場合、ステップはそのテーブルのすべての列をマッピングし、テーブルにない列をマッピングせず、各列にテーブルの型を指定する必要があります。これにより、アップサートでテーブルの列がデータごと削除されたり、列の型が変更されたりすることはありません。数値と通貨は同じ型として扱われます。拒否メッセージには、それぞれの相違点が示されます。たとえば The target columns must match the existing target table ‘customers’. The table has columns the step doesn’t map: region. のようになります。まだ存在しないターゲットテーブル、または変数で指定されたターゲットテーブルは、ステップの実行時にチェックされます。
  • 空のマッピングは自動的に入力されます。 ソーステーブルを選択済みで、ソース列またはターゲット列がない状態で保存すると、両方のマッピングテーブルを入力 を実行した場合と同様に、空の側がソースから入力されます。