CData Software Blog

クラウド連携のCData Software の技術ブログです。

Cloud Data Fusion で Salesforce から BigQuery へデータ連携

こんにちは!エンジニアの宮本です!

早速ですが、Google Cloud Next 2019で発表されたばかりである、フルマネージドのデータ統合プラットフォーム「Cloud Data Fusion」はご存知でしょうか?
実はこれ、今までありそうでなかったクラウド版ETLツールなんです。

そんなまだ発表されて間もない Cloud Data Fusion を CData 色に染め上げるべく、CData JDBC Driver を組み込んで "Salesforce" → "BigQuery" へのデータ連携をしてしまう方法をご紹介していきたいと思います。

以下は、2020/09/24 にクラウドエース様イベント「OPENDX 2020」で使用したCloud Data Fusion のミニ動画になります。内容は本記事と同じものです。

www.youtube.com

Cloud Data Fusion とは

ノーコードでデータ連携の設定が可能な言わば GCP の ETL ツール(サービス)です。
cloud.google.com

たくさんのコネクタや変換・分析機能がデフォルトで用意されているため、さまざまなデータソースを色々な組み合わせで扱うことが可能なようです。
また JDBC を扱うこともできるため、今回はここに着目し、CData Driver を組み込んでいきます。
ちなみに、Data Fusion のインターフェースがとてもグラフィカルで、次世代 ETL ツール感を漂わせています!
f:id:sennanvolar44:20190806162530p:plain

基本的には、
①データソースからデータを持ってきて、
②データを加工して、
③データを出力する
といった流れになると思いますが、②を飛ばして、①→③といったように、データをまるまるっとデータをレプリケーションすることもできるようです。

SalesforceからBigQueryへ連携

今回やりたいことは下のようなイメージです。GCP にある DataFusion にCData JDBC Driver をアップロードして、そこから BigQuery へデータをもっていくといった構成です。
f:id:sennanvolar44:20190806171845p:plain

事前準備

の2点です。

CData JDBC Driver for Salesforce について

ダウンロードした CData JDBC Driver for Salesforce を Cloud Data Fusion で使用するには、クラウド上で使えるランタイムキーを発行しなければなりません。以下のサポートフォームよりお問い合わせいただけると、評価版用のランタイムキーを発行できますのでご連絡ください。

www.cdata.com


Cloud Data Fusion の API を有効化

左側のサイドメニューから「API とサービス」をクリックし、「+APIとサービスを有効化」 f:id:sennanvolar44:20190807164556p:plain

Cloud Data Fusion のAPI を下記画面で有効化にする。
(キャプチャ取得時は既に有効化しておりました) f:id:sennanvolar44:20190807165116p:plain


Cloud Data Fusion の設定

CData JDBC Driver for Salesforce を組み込む前に、Cloud Data Fusion を使えるように設定します。

インスタンス作成

Data Fusion のトップ画面にある「CREATE INSTANCE」からインスタンスを作成します。 f:id:sennanvolar44:20190807163345p:plain

サービスアカウントへの権限付与

インスタンス作成後、サイドメニューよりIAMをクリックします。
画面下部にDataFusionのサービスアカウントが自動的に作成されていますので、右側にある編集ボタンをクリックして編集を行います。

f:id:sennanvolar44:20200930172924p:plain

サービスアカウントユーザーのロールを付与します。
f:id:sennanvolar44:20200930173313p:plain


CData JDBC Driver for Salesforce のアップロード

ここからは実際に、Data Fusion の設定をしていきます。
まずは JDBC Driver をアップロードを行います。
下記赤枠をクリックして Data Fusion の Control Center を開きます。 f:id:sennanvolar44:20190808153741p:plain

Control Center が表示されたら、「+」ボタンをクリックして JDBC Driver をアップロードしていきます。

  • Name:アップロードしたドライバーに設定する名前
  • Class name:cdata.jdbc.salesforce.SalesforceDriver

f:id:sennanvolar44:20190808154422p:plain アップロードする際の注意点として、Driver のファイル名を name-version の形式に変更してアップロードする必要があります。
なお、jarファイルをダブルクリックした際に表示されているバージョンをもとに「salesforce-connector-java-19.0.7115.0.jar」に変更しました。

f:id:sennanvolar44:20190808161752p:plain

アップロードが成功するとこのような画面が表示されるので、「Create a Pipeline」をクリックします。

f:id:sennanvolar44:20190808174409p:plain


パイプラインの作成

インプット元はサイドメニューの「Source」から選択します。今回は先ほどアップロードした SalesforceJDBC Driver を使用するため、「DataBase」を選択します。
アウトプット先は同じくサイドメニューより「Sink」→「BigQuery」を選択します。
f:id:sennanvolar44:20190808175421p:plain

「DataBase」の設定

「DataBase」のアイコンにカーソルを持ってくるとプロパティというボタンが表示されるのでクリックし、下記内容を設定します。

  • Label:Salesforce
  • Reference Name:Salesforce
  • Plugin Name:Salesforce Driver(Driver をアップロードした際の名前)
  • Plugin Type:jdbc
  • Connection String:SalesforceSalesforce へ接続する際の JDBC URL)
  • Import Query:インプットしたいデータを抽出するクエリ

ちなみにConnection String は以下のような形式になります。

例)
jdbc:salesforce:User=XXXX@cdata.com;Password=abc12345;SecurityToken= abcedfghij;RTK=XXXXXXXXXXXXXX;

Salesforce のアカウントやセキュリティトークンの取得方法がわからない場合は以下のヘルプを参考にしてください。

cdn.cdata.com



f:id:sennanvolar44:20190816123915p:plain 上のキャプチャの赤枠は、Salesforce から BigQuery へアウトプットするデータの定義となります。
こちらは「Import Query」のすぐ右上にある「Get Schema」をクリックすると下の画面が表示されますので、「Import Query」で入力したクエリを実行し、カラムを定義します。
f:id:sennanvolar44:20190816123251p:plain

「BigQuery」の設定

こちらも同様に BigQuery のプロパティから下記内容を設定します。

  • Label:BigQuery
  • Reference Name:BigQuery
  • Project ID:cdatajp
  • DataSet:demo
  • Table:Account_DataFusion

f:id:sennanvolar44:20190816130857p:plain

作成したパイプラインの実行

まずは作成したパイプラインをデプロイします。赤枠の「Deploy」ボタンをクリックしてデプロイを行います。
f:id:sennanvolar44:20190816135816p:plain

デプロイ完了後、Runボタンが表示されますので、クリックします。
f:id:sennanvolar44:20190816140502p:plain

処理が完了すると、Status が緑印で Succeeded と表示されます。また、 Salesforce から何件アウトプットされて、BigQuery へ何件インプットされたかも表示されています。今回は Salesforce から取得したデータをそのまま BigQuery へアウトプットしているので、12件がそのままBigQuery へ格納されたということになります。
f:id:sennanvolar44:20190816141440p:plain

アウトプットされた BigQuery 側の確認

処理が正常終了されたので、BigQuery 側を確認します。
事前に BigQuery のプロパティの設定で指定していた「Account_DataFusion」というテーブルが作成されていることが確認できました。

f:id:sennanvolar44:20190816142411p:plain

次にデータが12件入っていることを確認するため、テーブルの Preview を参照します。
正しく12件が格納されていることが確認できました。

f:id:sennanvolar44:20190816143201p:plain

Salesforce から BigQuery へのデータ連携は以上となります。

料金について

Basic エディションであれば毎月無料分が付与されるようですが、放置していればすぐに超えてしまいますので、検証など一時的に使用する場合は DataFusion のインスタンスを削除してしまうことをおすすめします。 f:id:sennanvolar44:20190816145325p:plain

最後に

今後は、Cloud Data Fusion のデフォルトで備わっているデータ変換なども挟んだパターンやなどもご紹介できたらと考えています。
とにかく、まだドキュメントが少ないので手探りではありますが、今後も検証は続けていきたいところです。

記事の中にも記載しておりますが、サポートよりランタイムキーを発行する必要がありますが、トライアル版として30日間無料でご利用いただけますので、お試しいただく際は以下のサポートフォームより是非ご連絡ください!

https://www.cdata.com/jp/support/