> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# リバースETL

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

従来のETL（抽出、変換、ロード）処理は、分析およびレポーティング用にソースシステムから集中データストアにデータをコピーします。*リバースETL* はその逆で、中央リポジトリから運用システムにデータを戻します。リバースETL は、データ分析の結果を使って業務プロセスを改善し、カスタマーエクスペリエンスを向上し、意思決定を促進します。

リバースETL の基本的なプロセスは次のとおりです。

* 分析目的でデータが集計および変換された**中央データウェアハウスやデータレイク**から、データを抽出します。
* 抽出したデータを、システムでの利用に適した形に変換します。変換には、データの再フォーマット、フィルタリング、エンハンスが含まれます。
* 変換されたデータを、さまざまな目的（レコードの更新やワークフローのトリガーなど）に使用可能な運用データベース、アプリケーション、またはその他のシステムにロードします。

{siteName} では、以下のデータソースでリバースETL 機能がサポートされています。

* [Amazon Redshift](../connections/sources/amazon-redshift-source)
* [Google BigQuery](../connections/sources/google-bigquery-source)
* [Microsoft SQL Server](../connections/sources/sql-source)
* [MySQL](../connections/sources/mysql-source)
* [Oracle](../connections/sources/oracle-source)
* [PostgreSQL](../connections/sources/postgresql-source)
* [Snowflake](../connections/sources/snowflake-source)

<Note>リバースETL 機能に使用できるソースデータベースは、**デルタスナップショット**レプリケーションタイプが実装されているデータベース（つまり、SQL EXCEPT ステートメントを許容するソースデータベース）に制限されます。</Note>

{siteNameShort} では、この機能は次の同期先でのみサポートされます（これらの同期先で使用できるレプリケーションの種類は**リバースETL** だけです）。

* [HubSpot](../connections/destinations/hubspot-destination)
* [Kintone](../connections/destinations/kintone-destination)
* [Microsoft Dynamics 365](../connections/destinations/microsoft-dynamics-365-destination)
* [Sage Intacct](../connections/destinations/sage-intacct-destination)
* [Salesforce](../connections/destinations/salesforce-destination)
* [Veeva Vault](../connections/destinations/veeva-vault-destination)
* [Zoho CRM](../connections/destinations/zoho-crm-destination)

## リバースETL 処理について

リバースETL は、データウェアハウスに変更をクエリし、そのクエリの結果を同期先に書き込むことで機能します。リバースETL ジョブを初めて実行すると、アプリケーションはデータウェアハウスのソーステーブルの初期スナップショットを作成し、その結果を同期先にロードします。以降の実行では、{siteName} が新しいスナップショットを作成し、前回のスナップショットと比較して変更を取り込みます。その後、これらの変更が同期先にロードされます。

**デルタスナップショット**機能を使用して、{siteNameShort} は正しく挿入あるいは更新されない行を記録するエラーテーブルを保持し、行レベルで個々のエラーを確認できるようにします。この機能は、前回のスナップショットで失敗した行もクリーンアップします。

リバースETL を使用すると、データの転送方法を4つのモードから選択できます。

* **Insert：** データソースに新しいレコードを挿入する場合は、このモードを選択します。**Insert** モードでは、ソーステーブルに一意のプライマリキーが必要です。新しいスナップショットを作成するたびに、そのキーによって{siteName} は新しい識別子（Id）を挿入していることを確認することができます。

* **Upsert：** データソースの**既存の**レコードを更新し、新しいレコードを挿入する場合は、このモードを選択します。**Upsert** モードでは、ソーステーブルから同期先テーブルにレコードを一致させるキーを定義する必要があります。

  **Upsert** モードでジョブを実行すると、**ジョブ > *ジョブ名* > 高度な設定 > レプリケートオプションを編集 > 削除の挙動**に移動して**削除の挙動**設定を構成することもできます。これらの設定は、前回のスナップショットには存在していたが最新のスナップショットでは欠落しているレコードを{siteNameShort} がどのように処理するかを制御します。

  * **Skip Deleted（デフォルト）：** 同期先に変更は加えられません。
  * **Soft Delete：** {siteNameShort} は、プライマリキーではないすべてのフィールドをNULL に設定することで、同期先のレコードを更新します。
  * **Hard Delete：** {siteNameShort} は、同期先からレコードを完全に削除します。

  {siteNameShort} は失敗した削除操作を後続の実行で再試行するため、同期先はソーススナップショットと一致した状態を維持します。

* **Update：** データソースの**既存の**レコードを更新する場合は、このモードを選択します。**Update** モードは、Salesforce ID またはMicrosoft Dynamics 365 代替キーを使用してソーステーブルと同期先テーブルのレコードを一致させます。Salesforce ID またはDynamics 365 代替キーにマッピングするソースカラムを選択する必要があります。

* **Delete：** 同期先からレコードを削除するには、このモードを選択します。**Delete** モードを使用してリバースETL ジョブを実行すると、{siteNameShort} は最新のスナップショットと以前のスナップショットを比較し、スナップショットの結果に表示される同期先レコードを削除します。

## リバースETL ジョブの作成

リバースETL ジョブを作成するには、ジョブパラメータを定義し、次に必須カラムとオプションカラム、および必要なキーを以下のようにマッピングする必要があります。

1. **ジョブ > ジョブを追加 > 新しいジョブを追加**を選択します。この手順により、**ジョブを追加**ダイアログボックスが開きます。

2. ジョブ名を入力します。

3. まず同期先（**Salesforce** または**Microsoft Dynamics 365**）を選択します。次に、この例に示すようにデータソースを選択します。

   <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Add-job-reverse-ETL.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=9eb9e39533a368603b731752a6bb5509" width="400" alt="リバースETL 用ジョブを追加ダイアログボックス" data-path="images/Add-job-reverse-ETL.png" />

   データソースおよび同期先を入力すると、**ジョブを追加**ダイアログボックスが展開し、上で示すように**種類**セクションと**転送モード**セクションが表示されます。**種類**セクションは、ジョブがリバースETL であることを示し、**転送モード**セクションでは、実行するデータ転送の種類を選択できます。転送モードについて詳しくは、[リバースETL 処理について](#understanding-the-reverse-etl-process)を参照してください。

4. **次へ**をクリックします。

5. **テーブルを設定**ダイアログボックスで、スキーマ、データソーステーブル、および同期先テーブルを選択します。

   <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Configure-tables-reverse-ETL.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=24397daa9c6860aff0f0d41f7bfdc8be" width="400" alt="テーブルを設定ダイアログボックス" data-path="images/Configure-tables-reverse-ETL.png" />

6. **次へ**をクリックします。<a id="columnmap2" />

7. **マッピングを設定**ダイアログボックスで、次のようにカラムとキーを設定します。

   1. キーを選びます（**Upsert** および**Update**モードの場合のみ）。
   2. 必須カラムをマッピングします。
   3. ダイアログボックスの下部にある**カラムを追加**をクリックして、必要なカラムを追加します。

8. **ジョブを追加**をクリックして、新しいジョブを作成します。ジョブが作成されると、以下に示すように、{siteNameShort} の<a id="columnmap" />**カラムマッピング**タブにテーブルマッピングが表示されます。

   <img src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Job-added-showing-column-mapping-reverse-ETL.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=a46c2d255b825172c2d380d2c7cc2dea" alt="ジョブ作成後のカラムマッピングタブ" width="1678" height="644" data-path="images/Job-added-showing-column-mapping-reverse-ETL.png" />

ジョブ作成後は、次のセクションで説明するとおりジョブを管理できます。

## ジョブの管理

リバースETL ジョブを追加したら、{siteNameShort} のほかのジョブと同様に、**ジョブ**ページから実行および管理することができます。アプリケーションでジョブをクリックすると、{siteNameShort} は標準タブ（**概要**、**カラムマッピング**、**ジョブ履歴**、**イベント**、**高度な設定**）を含むジョブページを開きます。次のセクションでは、**概要**タブ、**カラムマッピング**タブ、および**高度な設定**タブで、リバースETL ジョブの設定とマッピングを管理する方法について説明します。

### ジョブの概要

ジョブの**概要**タブは、ジョブの種類や転送モードなど、設定の概要を表示します。以下の例は、ジョブの種類が**リバースETL**、転送モードが**InsertMode** です。

<img src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Overview-tab-reverse-ETL.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=991252450c997830a3b0f2e001315b79" width="500" alt="リバースETL ジョブの概要タブ" data-path="images/Overview-tab-reverse-ETL.png" />

設定を編集するには、**編集**ボタンをクリックします。**設定を編集**ダイアログボックスで行うことができる唯一の変更は、ログファイルに対して異なる詳細レベルを選択することです。

### カラムのマッピング

<a href="#columnmap">先述したように</a>、新しいジョブを追加すると、{siteNameShort} は自動的に**カラムマッピング**タブを開きます。このページには、必須カラムとオプションカラムの両方に関する、データソースとSalesforce 同期先間のマッピングが表示されます。さらに、このページには**Insert** モードのキーのマッピングが表示されます。

<img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Edit-mappings-and-tables-reverse-ETL.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=4e3d4c53bae68d76a42a570084bde28b" alt="ソースと同期先のマッピングを表示するカラムマッピングタブ" width="1672" height="643" data-path="images/Edit-mappings-and-tables-reverse-ETL.png" />

「リバースETL ジョブの作成」の<a href="#columnmap2">ステップ7</a> で前述したように、カラムを手動でマップできます。また、{siteNameShort} アプリケーションのオートマッピング機能を使用することもできます。これは、カラムフィールドが多数ある場合に特に便利です。

ジョブ作成後、カラムのマッピングとデータソースおよび同期先テーブルの両方を編集できます。次のセクションでは、カラムをオートマッピングする方法と、カラムマッピングとテーブルを編集する方法について説明します。

#### カラムのオートマッピング

ジョブを作成し、**マッピングを設定**ダイアログボックスでカラムをマッピングすると、**オートマッピング**ボタンが無効になっていることがわかります。このボタンは、以下に示すように、データソースと同期先の両方に使用するキーカラムを選択すると有効になります：

<img src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Reverse-ETL_automapping-columns_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=7d13fd77dae9a42fe378449ffe622b10" width="500" alt="オートマッピングボタンが有効になったマッピングを設定ダイアログボックス" data-path="images/Reverse-ETL_automapping-columns_1.png" />

上記の例では、ダイアログボックスの**必須**セクションには2つのマッピングしか表示されていません。これらは手動で簡単にマッピングできます。しかし、カラム数が多い場合、手動でのカラムマッピングは時間がかかることがあります。そのような場合は、**オートマッピング**機能を使用すると、ソースカラムとターゲットカラムを素早くマッピングできるため処理が高速化されます。また、オートマッピングを使用すると、カラムの誤ったマッピングによる人為的なミスも軽減されます。

<Note>キーまたは必須カラムがないテーブルでは、**オートマッピング**ボタンは無効になります。ボタンを有効にするには、手動でカラムを追加する必要があります。</Note>

オートマッピング機能を使用するには：

1. **オートマッピング**ボタンをクリックします（キーカラム選択後）。ボタンをクリックすると、{siteNameShort} はマッピングされていないすべてのソースカラム（必須およびオプション）をスキャンし、大文字小文字を区別せずに、同じ名前の同期先カラムに自動的に一致させます。

   <img src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Reverse-ETL_automapping-columns_2.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=0a032bf8c68bb3dde447ba52d512af54" width="500" alt="オートマッピング後のマッピングを設定ダイアログボックス" data-path="images/Reverse-ETL_automapping-columns_2.png" />

2. **ジョブを追加**をクリックして、新しいジョブを作成します。ジョブが作成されると、{siteNameShort} の<a id="columnmap" />**カラムマッピング**タブにテーブルマッピングが表示されます。

#### カラムマッピングとテーブルの編集

マッピングを編集するには：

1. **編集 > マッピングを編集**を選択します。

   <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Edit-mappings-reverse-ETL.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=5bf8b2c97e575f528553b7194166c651" width="500" alt="マッピングを編集オプション" data-path="images/Edit-mappings-reverse-ETL.png" />

2. 新しいカラムを追加するか、必要なカラムとキーを変更します。

3. **保存**をクリックして変更を保存し、**カラムマッピング**ページに戻ります。

ソーステーブルまたは同期先テーブルを編集するには：

1. **編集 > テーブルを編集**を選択します。これにより、**テーブルを編集**ダイアログボックスに戻ります。

   <img src="https://mintcdn.com/cdata-sync/I6gJ4qR9mocXqHNN/images/Edit-tables-reverse-ETL.png?fit=max&auto=format&n=I6gJ4qR9mocXqHNN&q=85&s=9bff7e7db5a310162cf6f466db957c6e" width="500" alt="テーブルを編集ダイアログボックス" data-path="images/Edit-tables-reverse-ETL.png" />

2. ソーステーブルまたは同期先テーブルを更新します。例えば、同期先とデータソースの両方で**User** を選択します。**次へ**をクリックします。

3. **マッピングを編集**ダイアログボックスで、ジョブのカラムマッピングを再構築します。

4. **保存**をクリックして変更を保存し、**カラムマッピング**ページに戻ります。

### 高度な設定オプション

**高度な設定**タブには、ジョブの高度なレプリケーションオプションが含まれています。現在、リバースETL ジョブでは、タブには**Reset Strategy** というオプションが1つ含まれています。{siteNameShort} は、主キーを使用してテーブル内の行がいつ追加、変更、削除されたかを識別します。リバースETL ジョブでは、**Reset Strategy** レプリケーションオプションは、クエリでキーが変更された状況をどのように管理するかを定義します。

<img src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/Reverse-ETL_Reset-Strategy-Option_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=b25f90a2b060e345191d8ccc3d6c2b55" width="500" alt="高度な設定タブのReset Strategy オプション" data-path="images/Reverse-ETL_Reset-Strategy-Option_1.png" />

このオプションには2つの設定があります：

* **Full Reset：** この設定を使用すると、{siteNameShort} は、以前に複製された行を含むソーステーブルの完全な複製でスナップショットテーブルを置き換えます。重複エントリを作成する可能性があるため、**Insert** モードでこのオプションを使用することは避けてください。
* **Sparse Reset：** この設定では、{siteNameShort} は既存の行を変更したりエントリを複製したりせずに、スキーマの変更に合わせてスナップショットテーブルを更新します。そのため、**Sparse Reset** は**Insert** モードでの使用に適したオプションです。

また、**Reset Strategy** ドロップダウンリストの下にある**追加オプション**テキストボックスに、レプリケーションオプションのカンマ区切りのリストを入力することもできます。
