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" へのデータ連携をしてしまう方法をご紹介していきたいと思います。

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点です。


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

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

作成されたインスタンス名を先ほどの画面でクリックすると以下の画面に遷移しますので、画面下部にある Service Account をコピーします。
f:id:sennanvolar44:20190807164148p:plain
画面上部にある追加からメンバーを追加します。メンバー名は先ほどコピーした「Service Account」に合わせてください。
役割は BiqQuery へもアクセスしますので、「BigQuery 管理者」、「Cloud Data Fusion 管理者」、「Cloud Data Fusion API サービス エージェント」を付与します。
f:id:sennanvolar44:20190807170322p:plain f:id:sennanvolar44:20190807170442p: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:インプットしたいデータを抽出するクエリ

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