TROCCO が Databricks への書き込みをサポートしたので Salesforce のデータを転送してみた

## 概要

2024 年 6 月 24 日に、 TOROCCO が Databricks への書き込み機能をリリースしたため、検証してみました。Salesforce -> TROCCO -> Databricks の連携を実施しましたが、とても簡単にパイプラインを構築できることに驚きました。Databricks へのデータ転送方法に悩まれている方は TROCCO の利用を検討してもいいかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a6a9a421-d3a2-6c7d-edc7-4f32e4f138cb.png)

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

## 基本情報

### TROCCO とは

TROCCO（トロッコ）とは、データ分析基盤の構築と運用を支援するSaaS（Software as a Service）です。主にデータエンジニアリング領域のETL/データ転送、データマート生成、ジョブ管理、データガバナンスなどをカバーしているようです。多機能、かつ、コストパフォーマンスに優れたサービスであることから、導入されている事例を耳にすることが増えてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0ad13d47-ca93-4bde-ba33-aee86c041628.png)

引用元：[TROCCO(トロッコ)｜データ分析基盤の総合支援サービス](https://trocco.io/lp/index.html)

### Databricks とは

Databricksは、データとAIを統合するためのデータインテリジェンスプラットフォームです。このプラットフォームは、レイクハウスアーキテクチャを基盤としており、オープンな統合環境を通じて、あらゆるデータとガバナンス要件をサポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c659bd62-d9f2-ed06-6c19-c4954efa27fd.png)

引用元：https://www.databricks.com/jp

### Salesforce とは

Salesforce（セールスフォース）は、世界で最も広く利用されている顧客関係管理（CRM）プラットフォームです。営業、カスタマーサービス、マーケティング、Eコマースなど、ビジネスのあらゆる面で顧客データを中心に活動を進めることを可能にするクラウドベースのソフトウェアを提供しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/97963803-996a-ee5b-af1f-a3b231cd138c.png)

引用元：[Salesforceとは？ | セールスフォース・ジャパン](https://www.salesforce.com/jp/products/what-is-salesforce/)

## 環境の準備

### TROCCO のフリープランの申し込み

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ddd47cf8-5d37-15e2-0d94-e2148158b85e.png)

引用元：[フリープランお申し込み｜TROCCO(トロッコ) - データ分析基盤の総合支援サービス](https://trocco.io/lp/inquiry_free.html)

### Databricks 環境の準備

Databricks の無償版もあるようですが、今回は手元にあった環境で検証することとしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/46289833-b0cb-18a3-2d84-65ae55b72333.png)

引用元：[Databricks 無料トライアル | Databricks](https://www.databricks.com/jp/try-databricks#account)

### Salesforce 環境の準備

Salesforce の無償環境を利用できる Trailhead を申し込みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/16bf24af-e607-4b93-480f-118359ff28ce.png)

引用元：[Log in (salesforce.com)](https://tbid.digital.salesforce.com/oauth2/aus5v9466wdqLdY0O697/v1/authorize?response_type=code&response_mode=query&nonce=1f5fb427-5ac9-42b1-9ef5-d545bbc05dd5&client_id=0oa5v93ebgAGqkFSn697&redirect_uri=https%3A%2F%2Fiis.digital.salesforce.com%2Fservices%2Foauth2%2Fcallback&state=eyJyZWZlcnJlciI6Imh0dHBzOi8vdHJhaWxoZWFkLnNhbGVzZm9yY2UuY29tLyIsImNsaWVudElkIjoiM01WRzlnOXJic1RrS25BWFJVX2hPTHZIUllqN0hTMWNzTjBMbGhPU2VCUnY1TnAybXhQdXJjSWZmQTVWMHpuOC51SUR0Ym1YeVNXbXhxX1hkQTh3eCIsInJlZGlyZWN0VXJpIjoiaHR0cHM6Ly90cmFpbGhlYWQuc2FsZXNmb3JjZS5jb20vYXV0aC90Ymlkc2lnbnVwL2NhbGxiYWNrP3Byb21wdD1sb2dpbiZsb2NhbGU9amEiLCJzdGF0ZSI6ImE0MGEzOTMyMWEzNTJmOWEwNDEzZTFmOTJlM2E5ZjdlNTBlYjRkMDMwNTI4NjJhYiIsImNvcnJlbGF0aW9uSWQiOiIyMzg5MGQzZi1kM2FhLTQ0YzYtYmQ5Zi1jMTMyNDk3YzIwMDAiLCJzdGFydFRpbWUiOjE3MTkyMTQzODA0MzMsImlkcHMiOlsiSWRQIC0gR29vZ2xlIiwiSWRQIC0gU2FsZXNmb3JjZSIsIklkUCAtIE11bGVzb2Z0LVVTIiwiSWRQIC0gTXVsZXNvZnQtRVUiLCJJZFAgLSBUYWJsZWF1IiwiSWRQIC0gTGlua2VkaW4iLCJJZFAgLSBBcHBsZSIsIm90cCJdLCJsb2dnZWRJbiI6ZmFsc2V9&scope=openid+email+profile+address+phone+offline_access&intent=register)

ハンズオン組織として、Playground を作成してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/14b2963a-8f31-e437-7fd5-4d2d6a2bc5af.png)

組織に接続後に`ログイン情報を取得する`タブにて`パスワードをリセットする`を選択してパスワードを設定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f608a233-deed-0145-5aa0-e71e4f5bfabe.png)


## TROCCO による Datbrricks のデータ連携検証

### 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 にて `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-3. 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. TROCCO にて Databricks へ書き込み

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

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

### 2-2. TROCCO にて Salesforce の接続情報を作成して`Saleforceアカウント認証`を選択して Salesforce への認証を実施後に`保存`ボタンを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c7952441-ac7c-4734-eac1-eba2ffa49ea2.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7efef201-fe7f-a368-f697-04f9d0d469da.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cf3590fd-d01f-68cc-81cb-67cfa0807fe5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6d2ebd25-a1af-1491-532e-7969e1b92018.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/9d7b147c-faa5-aa88-f969-28e5ad854f38.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e503cde7-231e-d284-1b94-b43ecb5af638.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f78feb56-5e9e-33fb-c8ba-4d9768790d5a.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7fad8b1e-3b6f-b4b9-7646-4ceb9814aba3.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/bc61e28a-a2db-6f17-6ece-c8f688f42ced.png)


## 3. Databricks にてデータを確認

### 3-1. Databricks にて作成されたテーブル（`trocco_test_01.shcmea_01.account_cloned`）にデータが格納されることを確認

```sql
SELECT
    *
    FROM
        trocco_test_01.shcmea_01.account_cloned;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cac91a85-37ee-5e90-5136-584d81817d5f.png)