> ## Documentation Index
> Fetch the complete documentation index at: https://domoinc-openapi-sync-dataflows.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Workbench 5.1でUpsertを使用する

# はじめに

WorkbenchでUpsertを使用すると、新しい行または更新された行の小さいサブセットを特定し、既存のDomo DataSetにプッシュできます。Upsertは、一定のユースケースでデータ取り込みのパフォーマンスを大幅に向上させるために使用できるSQLマージの一種です。この更新方法を使用するには、データの各行を一意に識別するための主キーか複合キーが必要です。また、ODBCジョブのwhere句のように、Domoに送信する行のサブセットを特定する方法が必要です。行のサブセットが特定されると、Domoはキー列を比較して、その行が既にDataSetに存在するかどうかを判断し、それらの既存のレコードを *更新* します。存在していない行が *追加* されます。

Upsertは通常、DataSetがとても大きく、データが頻繁に更新されていて、データに固有の主キーまたは複合キーが含まれている場合に最適です。 **すべての行を送信する代わりに、新しい行または更新された行のみを送信する場合に、Upsertを使用して効率を向上できます。** Upsertを適切に使用すると、Workbenchジョブのパフォーマンスや効率に大きなプラスの影響を与えるばかりでなく、データベースやファイルストレージシステムに要求されるリソースが少なくなります。不適切な使用は、パフォーマンスや実行時間にマイナスの影響を与える可能性があります。

# Upsertの使用方法

WorkbenchでUpsert機能を使用するには、Domoに既存のWorkbenchジョブと正常なDataSetが既に存在している必要があります。Workbenchジョブの作成方法について詳しくは、「 Workbench 5.1でジョブを作成する 」を参照してください。

1. **［設定］**
   タブに移動します。

2. **［更新方法］**
   を **［Append］** に設定します。

   <Note>
     **注記：** これが新しいWorkbenchジョブである場合、 **［Replace］** で初めてジョブを実行してからDataSetを作成する必要があります。初めて実行した後、 **［Append］** に切り替えることができます。
   </Note>

   <Frame>
     <img alt="Upsert_Workbench_Update_Method.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/9GmyphKXosOtxL2U/images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUl.png?fit=max&auto=format&n=9GmyphKXosOtxL2U&q=85&s=63084dd15e771132032d8d8e14943c40" width="2509" height="992" data-path="images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUl.png" />
   </Frame>

3. **［スキーマ］**
   タブをクリックすると、 **Upsertキー** 列が表示されるようになります。

4. 主キーまたは複合キーを表す対応する列のチェックボックスを選択します。

   **ヒント：** 日付またはdatetime列は、常に一意であるとは限らないため、Upsertキーには推奨されません。

   次の画像では、トランザクションごとに完全に一意なため、「Transaction ID」が選択されています。これで、Workbenchは常に「Transaction ID」を参照してトランザクションIDが存在するかどうかを確認します。存在する場合は更新し、存在しない場合は、新しい行を追加します。

   **注記：** これらのステップを実行してもUpsertキーが表示されない場合は、Domoサポートに連絡し、Upsertが有効になっていることを確認するために、Domo DataSet IDを提供してください。詳しくは、「 [テクニカルサポートに連絡する](/ja/s/article/360042922874 "ヘルプとサポート") 」を参照してください。

   <Frame>
     <img alt="Upsert_Key.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/9GmyphKXosOtxL2U/images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUg.png?fit=max&auto=format&n=9GmyphKXosOtxL2U&q=85&s=4ee497c4c46b5b36ba2d7b6d99be0ed6" width="2511" height="1066" data-path="images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUg.png" />
   </Frame>

5. 次に、
   **［設定］** タブに戻り、処理中に **［編集］** をクリックしてクエリを作成します。

6. ロジックを追加して、新規または更新される可能性のあるデータの小さなサブセットのみをプルするようにします。

   この例では、トランザクションから7日以内にデータが更新される可能性があることが分かっているため、過去7日間のトランザクションを取得して、更新された行と新しい行を毎日キャプチャします。これは、「変更データ」または「デルタ」を識別するための様々な方法の簡単な一例にすぎません。

   <Frame>
     <img alt="Workbench_Upsert_Query.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/9GmyphKXosOtxL2U/images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUn.png?fit=max&auto=format&n=9GmyphKXosOtxL2U&q=85&s=483bdb20b36f7ae98456f50143b4fe2f" width="2000" height="1500" data-path="images/kb/ka05w00000123un-00N5w00000Ri7BU-0EM5w000005vPUn.png" />
   </Frame>

7. **［適用］**
   をクリックします。

8. プレビューを実行して適切なレコードが返されることを確認します。

9. （オプション）ジョブのスケジュールを確認し、それに応じて調整する必要があります。

これで、Workbench Upsertジョブが適切に設定され、クエリによって返されたデータに基づいて新しい情報が更新または追加されるようになります。
