トップ 技術全般 Snowflake ⇔ Salesforce 連携について調べてみた
# Snowflake # Salesforce
Snowflake ⇔ Salesforce 連携について調べてみた
SnowflakeとSalesforce連携はできるのか?何ができるか?何ができないか?等調べてみました
2022/3/8 21:37

Snowflake ⇔ Salesforce 連携が必要なケース

将来の SaaS 活用の姿として

  • Snowflake にて Single Source of Truth を実現し、すべてのデータを集約
  • Salesforce 上では業務上必要なデータだけを活用

というアーキテクチャが増えるのではないかと思ってます。

この場合、
営業活動、コールセンターでの架電、問い合わせ管理、チャット履歴等
Salesforce 上で発生したイベントデータを、マスタとなる Snowflake に同期したい。
というニーズ。

また、Salesforce 上で、Snowflake にしかない情報を扱いたい。
もしくは Salesforce の AI 機能で学習したい。BI をしたい。
等のニーズが予想できます。

今回は、これらを実現するための連携パターンを考えたいと思います。

Snowflake ⇔ Salesforce 連携デザインパターン

A) Salesforce -> Snowflake

日々営業が登録した顧客、案件、活動などのデータや、
コールセンターのオペレーターがお客様とお話したログなどの情報を
Snowflake にデータ同期したいという場面になります。

Salesforce の BI 機能である CRM Analytics(旧名 Tableau CRM)を介すことで
標準で用意されている機能で実現可能なようです。

Salesforce -> CRM Analytics -> Snowflake

① Salesforce -> CRM Analytics

Salesforce オブジェクトから、CRM Analytics データセット
にデータ同期します。同期タイミングはバッチ処理のような形で
設定されたジョブを決められたタイミングで起動させるイメージです。

ジョブの中身、スケジューリングは CRM Analytics 上で設定します。

【公式ドキュメント】 データ同期へのローカル Salesforce オブジェクトおよび項目の追加および削除 https://help.salesforce.com/s/articleView?id=sf.bi_integrate_connectors_salesforce_local_add_remove_objects.htm&type=5

② CRM Analytics -> Snowflake

こちらもデータ同期になりますが、CRM Analytics 側で
Snowflake 出力用のコネクターが用意されています。

【公式ドキュメント】 Snowflake 出力接続
https://help.salesforce.com/s/articleView?id=sf.bi_integrate_connectors_output_snowflake.htm&type=5

B) Snowflake -> Salesforce (外部オブジェクト)

レコード数が ◯ 億、◯ 十億となるようなトランザクションデータ、時系列データは
Salesforce 側では LDV(大量データ)の考慮が必要となり、
Snowflake -> Salesforce オブジェクト データ同期はあまり現実的でありません。

そこで登場するのが、Salesforce Connect という機能です。
Salesforce Connect を使い外部オブジェクトを定義することで、
データの実体を外部システムで管理しつつ、見た目は
あたかも Salesforce オブジェクトのようにふるまいます。

ただし、Salesforce Connect アダプターで用意されているのは、現時点(2022/3/8)では
OData2.0 / Odata4.0 / Salesforce 別組織 / カスタムアダプタ
等で、Snowflake は OData に対応していません。

なので、以下3つの方法が選択肢になります。

① Snowflake を OData 対応させる変換サービスを介す

OData 対応していない Snowflake を OData 対応させることで
Salesforce Connect できるようにする方法で、

Snowflake -> (OData変換サービス) -> Salesforce(外部オブジェクト)

となります。

例)CData API Server でちょうどこの OData 変換部分を提供しているようです。

CData Software https://www.cdata.com/jp/kb/tech/snowflake-odata-salesforce-lightning-connect.rst

② Salesforce Connect カスタムアダプタを開発する

Snowflake は OAuth での外部接続をサポートしており、
REST API にて外部から SQL クエリの発行が可能です。

Salesforce Connect の Snowflake 用カスタムアダプタを Apex で開発することで
OAuth 認証 & REST サービスへのリクエストを行い
外部オブジェクト実装が可能です。

(この部分、別途深堀りしていきたいと思います。)

おそらくこのカスタムアダプタパターンを使った AppExchange が ③ になるかと思います。

③ AppExchange を利用する

2022/2/7 にリリースされた AppExchange Omnata for Salesforce
Snowflake/BigQuery/Rockset と Salesforce Connect で接続し
外部オブジェクト形式で連携できるサービスのようです。

【AppExchange】Omnata for Salesforce
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3u00000MBcLmEAL

C) Snowflake -> Salesforce (CRM Analytics)

CRM Analytics で Snowflake データを扱いたい場合も
標準のコネクターが用意されているので、簡単に接続できます。
また、Snowflake コネクターはダイレクト接続となっており、
リアルタイムに Snowflake 上のデータを使った分析が可能なようです。

【公式ガイド】Snowflake でのデータに関するインサイトの直接的な取得
https://help.salesforce.com/s/articleView?id=sf.bi_direct_data_for_snowflake.htm&type=5

今後の展望

今回は連携デザインパターン 3 つについて、考察しました。

日本国内でも導入実績の多い Salesforce と、
今後 5 年間での売上成長目標を 819%!!!(2021 年時点) を見据えている Snowflake
の連携シーンは、今後増えてきそうですね!

Breaking Codes