Tableau CRM のSalesforce 出力接続を試してみる

##Salesforce出力接続がGAに！
今回はSummer21でGAとなったTableau CRMの[Salesforce 出力接続](https://help.salesforce.com/articleView?id=sf.bi_integrate_connectors_output_salesforce.htm&type=5)をご紹介します。
地味な機能に見えますが、**神Update**です。なぜなら今までSalesforceがあまり得意としていなかった**バッチ処理**がメチャクチャ簡単に実装できる様になるからです。

###Tableau CRMのExport機能
近年の機能強化でTableau CRMから外部へのデータExport機能が増えてきました。
Amazon S3やSnowflake、Tableau Hyperファイルへの出力が可能になっていましたが、
ここに来て本丸の**Salesforce Platformへの書き出しができるようになりました。**

この機能待ってたんですよね。元々TableauはAI/BI機能がフォーカスされがちですが、**データベース自体も非常に高速**ですし、ライセンスによって１００億行まで処理可能です。これにより**Tableau CRMがSalesforceの集計マシンになります。**

Saelsforceのデータ（＋外部データ）をレシピで集計し、結果をSaelsforce側に書き込む事ができます。

####メリット

- ノーコードで集計処理追加が可能（APEXやトリガなど記載する必要がない）
- Salesforce側の制限を越える処理ができる（ガバナ制限、積み上げ集計の限界）
- Salesforce側で集計用のためだけにデータを保持している場合はTCRMに処理を移管できる。

####デメリット

- リアルタイム処理ではない
- Tableau CRM側へのデータ受け渡し処理が追加される
- 容量制限がある（1日100MB分まで、それ以上は追加のData Pipelineが必要）

などが挙げられます。取引先に売上条件などからフラグ付したい、そのためにAPEXでバリバリコーディングしている場合は、真っ先に検討してみてください。

##事前準備
まずは**出力接続を有効化**する必要があります。設定ホームから「分析」「設定」の”Salesforce出力接続を有効化”をチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/e1cf0561-84f4-a0eb-e3a4-68ca04c67aff.png)

###出力接続の設定

####データ接続の追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/98b99fe1-e6d6-f1a6-f988-8f62367d4278.png)

データマネージャーの「接続」から「データに接続」を選択して出力先のSalesforce情報を入力します。

####出力先接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/9686fa0f-66ad-f478-4924-2c79012a3ef3.png)

「出力先接続」タブを選択して、Salesforcce出力コネクタを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/d97ac4c7-e76c-2bf8-34df-fa559e9f8564.png)

認証情報を入力しすれば接続設定は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/3f7a7604-582d-05d2-6da3-d5ddac0b1330.png)


###レシピの作成
それでは実際にレシピを使用して集計処理を追加してみましょう。
「データフローとレシピ」から「レシピを作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/14e7468f-9b17-5d1a-0a95-1ca8f31cc148.png)

今回、レシピに関しては詳しく説明しませんが、シンプルに取引先を取り込み、クラスタ処理して、取引先オブジェクトに書き込みする設定です。
**クラスタリングに関してもSummer21で追加された有用な機能なので今後またご紹介したいと思います。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/a4273cf8-bfea-6026-e48a-8c859106fb23.png)

####クラスタ処理
クラスタを追加して取引先をグルーピングします。「種別」「従業員数」「年間売上」でグループ化しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/83ab6e01-49e0-b320-0cec-ce2ebe1f090b.png)

####列の絞り込み
規定だとTCRMに取り込まれたすべての列がアップデートされてしまうので、必要最小限（今回はクラスタだけ）に絞り込んだほうが良いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/db36386f-60ab-10bd-9429-e3f7692235bf.png)

####オブジェクトへの書き込み
ここでオブジェクト名とID、更新するカラムの対応設定ができます。
今回はクラスタを追加します。ちなみにここで指定する項目はオブジェクト側に事前に作成しておく必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/c8b73f7c-a3b0-7e19-6f4e-bb405f8664ef.png)

###結果の確認
ご覧の通り書き込み指定したクラスタが無事に書き込みされているのが確認できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/2fa03012-e274-c098-86af-17114149cdea.png)

###スケジューリング
レシピが動作することが確認できたので、あとはこちらの処理をスケジューリングしていきたいと思います。
ちなみにSummer21から**レシピのスケジューリングも改善され、今まで時間ベースでしか設定できなかったモードが、イベントベースでも制御可能になりました。**しかもイベントの中にデータフローやレシピも指定できるので、

「オブジェクト同期」ー＞「データフロー」ー＞「レシピ2」ー＞「レシピ２」

のような連続処理が可能になっています。これは嬉しい機能追加ですよね！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/af743ebd-12f1-8def-8caa-cba0b6f68e6b.png)

###まとめ
かんたんながらTableau CRMからSalesforceへの出力接続をご紹介しました。
こちらを使うことで**大量データを素早く、高度な変換処理をかけつつ柔軟なスケジューリングをノンコーディングで実装できます！**是非是非ご活用ください。