> ## 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.

# DataSet更新方法

# はじめに

Domoのデータパイプラインでは、置き換え、追加、結合、パーティションの4種類の更新方法を使用します。Domoの一部の資料では、これらが蓄積方法と表現されています。各方法には最適なユースケースがあり、一部には既知の制限事項があります。特定のタスクで各更新方法が利用できるかどうかは、使用しているコネクターまたはツールによって異なります。方法を選択する前に、「この方法を使用すると、データを必要としているユーザーにデータをタイムリーに提供できるだろうか」と考えると便利です。

方法によって堅牢性は異なります。堅牢なデータパイプラインとは、自己修正を行い、重複することなく同じデータを複数回実行でき、手動による介入を必要としないものです。

この記事では、各方法について説明します。

* [置き換え](#replace)
* [追加](#append)
* [結合](#merge)
* [パーティション](#partition)

# 置き換え

置き換えは、ほとんどのコネクターでデフォルトの更新方法になっています。置き換えを実行すると、DataSet内の既存のデータがすべて削除され、完全に新しいデータバッチが残ります。置き換えでは、DataSetが大きいと処理負荷がより大きくなる可能性があります。ただし、大量のデータを定期的に取得する時間とリソースがあるのであれば、データが安定した後にデータの最終状態を維持して保存するには、置き換えは場合によっては最適な方法です。

#### ユースケース

DataSetに、2年間の売上履歴データが含まれているとします。毎月、置き換えを使用してDataSetを更新します。これにより、可視化を作成するための2年間の履歴参照をコンスタントに取っておくことができます。置き換えは、状態が変わらないこの種のトランザクションデータに適しています。

例えば、2024年8月の時点で、DataSetには2022年7月から2024年7月までのデータが含まれています。月末に、2022年8月から2024年8月までのデータを含むようにデータを置き換えます。

#### 既知の制限事項

* 大規模なDataSetでは処理時間が長くなります。

このGIF動画は、置き換えの方法を表しています。受信データによってすべての既存データが完全に置き換えられます。

<Frame>
  <img alt="Replace (1).gif" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuq4.jpg?s=2ee3b77c607d13aded432426993ea71e" style={{width: 710.994, height: 400}} width="960" height="540" data-path="images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuq4.jpg" />
</Frame>

# 追加

追加の方法を使用すると、受信データがすべて既存のDataSetに追加されます。データが更新されているかどうかは考慮されません。完全な置き換えの処理負荷と処理時間を回避するには、追加を使用することを選択します。追加は最も堅牢でない更新方法です。また、受信データはDataSetに既に存在している場合でもすべて追加されるため、重複レコードが作成される場合があります。

再帰的追加DataFlowを使用して、重複レコードを検索して特定し、最後のDataSetから削除することはできます。詳細については、「 [再帰的/スナップショットMagic ETL DataFlowを作成する](/s/article/360057087393) 」を参照してください。

DataSetが時間とともに変わる場合は、追加によってデータのスナップショットをとり、経時的な傾向を確認して可視化に表示することができます。

#### ユースケース

商談IDなどの識別子ごとに状態が変わるデータの場合、追加を使用してデータのスナップショットをとることができます。毎週月曜日にすべての商談のスナップショットをとり、時間の経過に沿って商談Xを追跡できます。2ヶ月前、商談Xはステージ1にあり、ステージ2に到達するには2週間、ステージ3に入るにはさらに3週間かかったというようなことが分かります。この方法は、商談の進捗に応じた販売サイクルを理解するのに役立ちます。

#### 既知の制限事項

* データの重複の可能性
* 更新に失敗すると、データに空白が生じる可能性があります。
* Domo APIが、1回のクエリで返すデータの量を制限している場合

次の図は、追加の方法を表しています。受信データは既存のデータの下に配置されます。

<Frame>
  <img alt="Screenshot 2023-09-19 at 12.42.43 PM.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vubZ.jpg?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=710dae0643c2a16cb8f765c8eaa59e36" style={{width: 710, height: 453.999}} width="2642" height="1688" data-path="images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vubZ.jpg" />
</Frame>

# 結合（Upsert）

一部のコネクターでは、結合の方法（または「Upsert」）を使用できます。結合では、DataSet全体を置き換えたり、すべての受信データを追加したりするのではなく、受信レコードが新規レコードであるか既存のレコードを更新したものであるかに応じて、データを追加するか置き換えることができます。結合の方法では、新規レコードや更新レコードの受信データはチェックされないことに注意してください。チェックはユーザーの責任で行います。

新規レコードまたは更新レコードのみの受信データをスキャンするのに必要な計算時間と、変更の処理に必要な時間を考慮すると、データの大部分が更新されている場合、結合は最も時間効率の高い方法ではない可能性があります。一方、既存のDataSetが大きく、受信レコードと既存のレコードの比率が低い場合は、完全な置き換えよりも結合の方がはるかに効率的な場合があります。

#### 結合キー

結合ではキーが使用されます。これは、受信レコードがDataSetに既に存在するかどうかをDomoに示します。受信行の結合キーの値が既存の行の値と一致する場合、受信レコードによって既存のレコードが置き換えられます。一致するレコードがない場合、受信レコードは新規レコードとして扱われ、DataSetに追加されます。

結合キーはデータタイプがテキストまたは数値である必要があり、NULL値や重複が含まれていてはいけません。

#### 既知の制限事項

* 新規レコードと更新レコードのみを含めるように受信データを構成するには、さらに操作が必要になる場合があります。
* データには有効な結合キーが含まれている必要があります。
* 小規模なDataSetやレコードの大部分が更新されるDataSetの場合、完全な置き換えより処理が遅くなることがあります。

次の図は、結合の方法を示しています。受信データによって既存のデータが置き換えられるか、DataSetに受信データが追加されます。

<Frame>
  <img alt="merge graphic.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuff.jpg?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=c3de80faa2f50b2c890871f2dedd2d71" style={{width: 710, height: 453.999}} width="1592" height="1020" data-path="images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuff.jpg" />
</Frame>

# パーティション

パーティションの方法を使用すると、同じキー値を持つDataSetレコードを論理グループ、つまりパーティションに分けることができます。データが更新されると、（ [結合](#merge) の場合は個々のレコードだったのに対して）パーティション全体が置き換えられるか、追加されます。これにより、置き換えられるパーティションまたは追加されるパーティションのみが処理されるため、効率が向上します。

パーティションを使用するには、パーティションキーとして使用するフィールドまたはフィールドセットを選択します。Domoはこのキーの値を使用して、同じキー値を持つすべてのレコードが1つのパーティションに入るように、データをパーティションに分けます。キーを選択する際は、平均パーティションサイズが大きくなるように、パーティションを少数作成するキーを使用することを推奨します。

パーティションが正しく機能するには、パーティション内の一部のレコードが新規でない場合または更新されていない場合でも、受信データパーティションにそのパーティションのすべてのレコードが含まれていることを確認する必要があります。そうでない場合、既存のパーティションが受信パーティションに置き換えられたときに、データが失われる可能性があります。

#### 既知の制限事項

* レコードが新規であるか更新された場合のみパーティション全体を含めるように受信データを構成するには、さらに操作が必要になる場合があります。
* データには有効なパーティションキーが含まれている必要があります。
* 小規模なDataSetの場合は、完全な置き換えより処理が遅くなることがあります。

次の図は、パーティションの方法を表しています。データが更新されたパーティション、またはDataSetの下部にデータが追加された各パーティションは、受信データで完全に置き換えられます。

<Frame>
  <img alt="partition graphic.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuj3.jpg?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=b9acb974384e23a8682319bb289439c6" style={{width: 710, height: 453.999}} width="2000" height="1276" data-path="images/kb/ka0Vq0000002DkL-00N5w00000Ri7BU-0EM5w000006vuj3.jpg" />
</Frame>

日本語
