こんにちは!エンジニアの宮本です!
早速ですが、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 のミニ動画になります。内容は本記事と同じものです。
Cloud Data Fusion とは
ノーコードでデータ連携の設定が可能な言わば GCP の ETL ツール(サービス)です。
cloud.google.com
たくさんのコネクタや変換・分析機能がデフォルトで用意されているため、さまざまなデータソースを色々な組み合わせで扱うことが可能なようです。
また JDBC を扱うこともできるため、今回はここに着目し、CData Driver を組み込んでいきます。
ちなみに、Data Fusion のインターフェースがとてもグラフィカルで、次世代 ETL ツール感を漂わせています!
基本的には、
①データソースからデータを持ってきて、
②データを加工して、
③データを出力する
といった流れになると思いますが、②を飛ばして、①→③といったように、データをまるまるっとデータをレプリケーションすることもできるようです。
SalesforceからBigQueryへ連携
今回やりたいことは下のようなイメージです。GCP にある DataFusion にCData JDBC Driver をアップロードして、そこから BigQuery へデータをもっていくといった構成です。
事前準備
CData JDBC Driver for Salesforce のインストール
下記URLより評価版のダウンロードが可能です。
https://www.cdata.com/jp/drivers/salesforce/jdbc/Google BigQuery 使用設定
の2点です。
CData JDBC Driver for Salesforce について
ダウンロードした CData JDBC Driver for Salesforce を Cloud Data Fusion で使用するには、クラウド上で使えるランタイムキーを発行しなければなりません。以下のサポートフォームよりお問い合わせいただけると、評価版用のランタイムキーを発行できますのでご連絡ください。
Cloud Data Fusion の API を有効化
左側のサイドメニューから「API とサービス」をクリックし、「+APIとサービスを有効化」
Cloud Data Fusion のAPI を下記画面で有効化にする。
(キャプチャ取得時は既に有効化しておりました)
Cloud Data Fusion の設定
CData JDBC Driver for Salesforce を組み込む前に、Cloud Data Fusion を使えるように設定します。
インスタンス作成
Data Fusion のトップ画面にある「CREATE INSTANCE」からインスタンスを作成します。
サービスアカウントへの権限付与
インスタンス作成後、サイドメニューよりIAMをクリックします。
画面下部にDataFusionのサービスアカウントが自動的に作成されていますので、右側にある編集ボタンをクリックして編集を行います。
サービスアカウントユーザーのロールを付与します。
CData JDBC Driver for Salesforce のアップロード
ここからは実際に、Data Fusion の設定をしていきます。
まずは JDBC Driver をアップロードを行います。
下記赤枠をクリックして Data Fusion の Control Center を開きます。
Control Center が表示されたら、「+」ボタンをクリックして JDBC Driver をアップロードしていきます。
- Name:アップロードしたドライバーに設定する名前
- Class name:cdata.jdbc.salesforce.SalesforceDriver
アップロードする際の注意点として、Driver のファイル名を name-version の形式に変更してアップロードする必要があります。
なお、jarファイルをダブルクリックした際に表示されているバージョンをもとに「salesforce-connector-java-19.0.7115.0.jar」に変更しました。
アップロードが成功するとこのような画面が表示されるので、「Create a Pipeline」をクリックします。
パイプラインの作成
インプット元はサイドメニューの「Source」から選択します。今回は先ほどアップロードした Salesforce の JDBC Driver を使用するため、「DataBase」を選択します。
アウトプット先は同じくサイドメニューより「Sink」→「BigQuery」を選択します。
「DataBase」の設定
「DataBase」のアイコンにカーソルを持ってくるとプロパティというボタンが表示されるのでクリックし、下記内容を設定します。
- Label:Salesforce
- Reference Name:Salesforce
- Plugin Name:Salesforce Driver(Driver をアップロードした際の名前)
- Plugin Type:jdbc
- Connection String:Salesforce(Salesforce へ接続する際の JDBC URL)
- Import Query:インプットしたいデータを抽出するクエリ
ちなみにConnection String は以下のような形式になります。
例) jdbc:salesforce:User=XXXX@cdata.com;Password=abc12345;SecurityToken= abcedfghij;RTK=XXXXXXXXXXXXXX;
※Salesforce のアカウントやセキュリティトークンの取得方法がわからない場合は以下のヘルプを参考にしてください。
上のキャプチャの赤枠は、Salesforce から BigQuery へアウトプットするデータの定義となります。
こちらは「Import Query」のすぐ右上にある「Get Schema」をクリックすると下の画面が表示されますので、「Import Query」で入力したクエリを実行し、カラムを定義します。
「BigQuery」の設定
こちらも同様に BigQuery のプロパティから下記内容を設定します。
- Label:BigQuery
- Reference Name:BigQuery
- Project ID:cdatajp
- DataSet:demo
- Table:Account_DataFusion
作成したパイプラインの実行
まずは作成したパイプラインをデプロイします。赤枠の「Deploy」ボタンをクリックしてデプロイを行います。
デプロイ完了後、Runボタンが表示されますので、クリックします。
処理が完了すると、Status が緑印で Succeeded と表示されます。また、 Salesforce から何件アウトプットされて、BigQuery へ何件インプットされたかも表示されています。今回は Salesforce から取得したデータをそのまま BigQuery へアウトプットしているので、12件がそのままBigQuery へ格納されたということになります。
アウトプットされた BigQuery 側の確認
処理が正常終了されたので、BigQuery 側を確認します。
事前に BigQuery のプロパティの設定で指定していた「Account_DataFusion」というテーブルが作成されていることが確認できました。
次にデータが12件入っていることを確認するため、テーブルの Preview を参照します。
正しく12件が格納されていることが確認できました。
Salesforce から BigQuery へのデータ連携は以上となります。
料金について
Basic エディションであれば毎月無料分が付与されるようですが、放置していればすぐに超えてしまいますので、検証など一時的に使用する場合は DataFusion のインスタンスを削除してしまうことをおすすめします。
最後に
今後は、Cloud Data Fusion のデフォルトで備わっているデータ変換なども挟んだパターンやなどもご紹介できたらと考えています。
とにかく、まだドキュメントが少ないので手探りではありますが、今後も検証は続けていきたいところです。
記事の中にも記載しておりますが、サポートよりランタイムキーを発行する必要がありますが、トライアル版として30日間無料でご利用いただけますので、お試しいただく際は以下のサポートフォームより是非ご連絡ください!