TROCCO が Databricks からのデータ読み込みをサポートしたので Salesforce へリバース ETL してみた

## 概要

TROCCO が`転送元 - Databricks`（Databricks からの読み込み）機能をリリースしたという噂を聞いたため、検証してみました。2024年7月10日19時00分時点ではリリースノートへの記載は確認ができませんでしたが、`転送元 - Databricks`機能のドキュメントを確認できました。今回の記事では、 Databricks -> TROCCO -> Salesforce を検証します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6e228ea5-fa59-ff43-c41e-460600d315d1.png)

引用元：[リリースノート一覧 (trocco.io)](https://documents.trocco.io/docs/release-notes)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c8fb32ef-a7db-75be-b5c9-0f589090d61a.png)

引用元：[転送元 - Databricks (trocco.io)](https://documents.trocco.io/docs/data-source-databricks)

Salesforce -> TROCCO -> Databricks の検証記事を投稿したところ、多くの反響をいただきました。その際に、送元 - Databricks機能がないことに違和感を覚えましたが、TROCCO が実装した機能を迅速にリリースしていくスピード感には感服しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/08c53cd0-d37a-c38c-ef28-05b4fa998e4e.png)

引用元：[TROCCO が Databricks への書き込みをサポートしたので Salesforce のデータを転送してみた #データエンジニアリング - Qiita](https://qiita.com/manabian/items/a4688641c56891279b04#環境の準備)

TROCCO の接続情報の画面にて下記のように表示されているように、Salesforce へ書き込み（転送先Salesforceの利用）を実施する場合には認証方法が指定されていることに注意してください。TROCCO のドキュメントにて親切な手順が記載されており、とても参考になます。

> 転送先Salesforce、転送元Salesforceレポート、転送元Tableau CRM Analyticsをご利用の場合、「ユーザー・パスワード認証」を指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e91e676c-7239-4eaf-9e0d-a84c98abc7cd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/be6b6323-2bc8-cf2c-bf35-35c72ab9ea6d.png)

引用元：[Salesforceの接続情報 (trocco.io)](https://documents.trocco.io/docs/connection-configuration-salesforce)

## 環境準備

前回投稿した記事を参考に環境準備をしてください。私は前回構築した環境を利用しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5508ac2f-8962-4d05-a444-bb3d670e1751.png)

引用元：[TROCCO が Databricks への書き込みをサポートしたので Salesforce のデータを転送してみた #データエンジニアリング - Qiita](https://qiita.com/manabian/items/a4688641c56891279b04#環境の準備)

## Salesforce -> TROCCO -> Databricks のデータ連携検証

### 1. Databricks の事前準備

### 1-1. Databrics にログインし、 SQL Editor タブにて Databricks 上に書き込み先のカタログとスキーマを作成

```sql
CREATE CATALOG IF NOT EXISTS trocco_test_01;
CREATE SCHEMA IF NOT EXISTS trocco_test_01.shcmea_01;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6fde50bc-bc28-05a7-873f-e019ed77025f.png)

### 1-2. Databricks 上で Salesforce に連携するテーブルの作成とデータ挿入を実施

```sql
CREATE OR REPLACE TABLE trocco_test_01.shcmea_01.TO_SALESFORCE_TABLE_01
AS
SELECT
    'TROCCO_01' AS Name
UNION ALL
SELECT
    'TROCCO_02' AS Name
UNION ALL
SELECT
    'TROCCO_03' AS Name

;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a0b66559-60ef-97de-e9e3-48f4e312fa83.png)


```sql
SELECT
    NAME
    FROM
        trocco_test_01.shcmea_01.TO_SALESFORCE_TABLE_01;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/88b18c96-0b06-2f2e-1c05-a816b9ba3dce.png)

### 1-3. Databricks にて `SQL Warehouses`-> `Stater Warehouse` -> `Connection datails`を選択して、 TROCCO に登録するための `Server hostname`と`HTTP path`の接続情報を取得

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f9f87544-d43a-bb95-c3fb-e4b9523be84d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0a7e6d30-5822-eee2-153a-3394138f200d.png)

### 1-4. Databricks のドキュメントを参考に Databricks アクセストークンを取得

- [個人用アクセストークンを監視および管理します | Databricks on AWS](https://docs.databricks.com/ja/admin/access-control/tokens.html)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f2baf68b-8cf0-20af-57a5-b02f7ded0e3a.png)

## 2. Salesforce にてセキュリティトークンを取得

### 2-1. Salesforce にログイン後、右上の`Setting`（設定）を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/412500fa-2fe5-47ce-63b3-bec06bb6f01f.png)

### 2-2. My Personal Information（私の個人情報） -> `Reset My Security Token`（私のセキュリティトークンのリセット）をクリック後に`Reset Security Token`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fb80e77f-ba79-81a7-99ea-1797cefbe5b6.png)

### 2-3. ユーザーアカウントのメールアドレス宛にセキュリティトークンを送付した旨のメッセージを確認

> We sent a new security token to the email address for your account, {mail_address}

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b86ecaa7-49a5-238d-43f6-87e6070a1869.png)

### 2-4. メールにて届いた Security token の値を記録

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f4b29d21-7067-1d50-435b-cab618c1218b.png)

## 3. TROCCO にて Databricks から Salesforce へ書き込み

### 3-1. TROCCO にログイン後に Databricks の接続情報を作成して`保存`ボタンを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/da8be6bf-57d7-1bb7-e32c-e58899489abe.png)

### 3-2. TROCCO にて Salesforce の接続情報を入力後に`保存`ボタンを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ba1e9f36-3a55-f3fa-2da4-5cba02298c23.png)

### 3-3. Databricks のテーブルを Salesforce の Account オブジェクトを に書き込むデータ転送設定を作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/18e25286-7974-ca0d-f2e3-5561b7f341cf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/9c107052-d544-6a37-95f2-58516ea4f246.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/da95d6b5-59ed-aed7-9bf3-feb53e04c70e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0d96a08b-3dbc-29e1-fb50-44315d50c0aa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/1b0a649f-e141-f000-c72d-0a0a531bff56.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5b026d9d-4316-f7cc-cd9f-e4179b0e9a98.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/683ea82b-47d0-f5a7-14e1-b4c57faf1ac1.png)

### 3-4. 作成したデータ転送を実施

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fdb356fd-4aca-1eb0-4ae1-26457b531f61.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/34438609-0202-2eb6-5104-204747a2e81a.png)

### 3-5. 転送ジョブが正常終了することを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7424025a-e1ce-8372-78c0-d66a97afd99d.png)

## 4. Salesforce にてデータを確認

### 4-1. Salesforce にて Account のレポートにてデータが書きこまれていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d822d72d-1246-0d74-9a9e-188da2bdfbf7.png)