こんにちは、CDataでエンジニアをしてます宮本です。
今回はGCP上のノーコードETLサービス Google Cloud Data Fusion と、CData が提供するSaaS 型のデータハブサービス「CData Connect」をつないで、Dynamics 365(CRM)のデータをBigQuery に連携する方法をご紹介します。
さまざまなクラウドサービスのデータをOData、MySQL、SQLServer の3つの規格で接続できるインタフェースが提供されるSaaS 型のサービスです。 https://www.cdata.com/cloudhub/ GCPのノーコードETL サービスとなっていて、画面上で簡単にデータ連携のフローを作成することができます。 CData Connect にてDynamics 365(CRM)へのMySQL インタフェースを作成後、DataFusion からは普通のMySQL データベースへ接続する感覚でCData Connect に接続し、Dynamics 365(CRM)のデータをBigQuery に連携するデータパイプラインを作成・実行します。 利用するサービスなどがいくつかありますが、どれもやることは少ないので、一つずつみていきましょう。 CData Connect のアカウントでログイン後、「DATABASE」→Dynamics 365(CRM)のアイコンをクリックします。 https://www.cdata.com/cloudhub/ Dynamics 365(CRM)への接続設定を行います。 CData Connect 上のユーザーを作成することができます。ここで作成したユーザーは他のサービスからCData Connect へ接続する際に使用します。 まずは、「ENDPOINTS」をクリックしてください。そこにはOData、MySQL、SQLServer のエンドポイントが表示されていますので、CData Connect へ接続するサービスはこのエンドポイントを使用します。 作成したデータベースをクリック後、「Privilrgrs」タブより使用するユーザーの権限を付与します。 これで、CData Connect へのMySQL として接続できる準備が整いました。 この時点でMySQL WorkBench で接続することができますので、テーブル一覧やカラムなどを確認することができます。
接続すると、Dynamics365(CRM)のデータがMySQL のDB のようにWorkBench から参照することができます。 こちらのリンクより、MySQL で公式に出しているJDBC ドライバーをダウンロードしてください。 https://www.mysql.com/jp/products/connector/
ダウンロードしたjdbcドライバーは、あとでData Fusion にアップロードします。 ではここからData Fusion の作成に入ります。 ここではMySQL JDBC ドライバーをData Fusion にアップロードします。インスタンス作成後フロー画面を表示させ、右上にある+ ボタンをクリックします。 右上のDriver のUpload というボタンをクリックします。 先ほどダウンロードしたMySQL のJDBCドライバーをドラッグアンドドロップでアップロードし、次に進みます。 ドライバー名と、ドライバークラス名(com.mysql.jdbc.Driver)を入力します。バージョンはアップロードしたドライバーのファイル名より自動で設定されます。 これで、Data Fusion でMySQL JDBC ドライバーを使用できるようになりました。 左にあるサイドメニューのSource にあるDatabase をクリックすると、右側にデータベースのコネクタが表示されます。 ここではCData Connect への接続部分を設定します。
コネクタをクリックし、接続情報を以下の赤枠の通りに入力します。Label やReference Name は任意の内容で構いません。 jdbc:mysql://CDataConnectのMySQLエンドポイント/データベース名?user=作成したユーザー名&password=作成したユーザーのパスワード
クエリを入力します。今回は以下のクエリを入力しました。 入力後、GET SCHEMA ボタンをクリックし、スキーマ情報を取得します。 このようにCData Connect から取得するスキーマ情報が表示されます。 これで、まずはCData Connect への接続部分の設定が完了しました。 使用するBigQuery のデータセットで新規でテーブルを作成します。 先ほどのデータ連携元と同じ手順でBigQuery コネクタを選択します。 コネクタ同士を接続した後、BigQuery コネクタをクリックします。 使用するBigQuery のプロジェクトIDとデータセットID、テーブル名を設定します。 左上にデータパイプライン名を設定後、右上にあるDeploy ボタンをクリックします。 RUN ボタンをクリックします。 数分後、Status がSucceeded になったら正常に処理が完了したことになります。またコネクタ内にあるOut とIn にある数字はレコード数になり、今回は10件Dynamics 365(CRM)からBigQuery へ連携されたことになります。 それでは、BigQuery のコンソールをみてみましょう。 Data Fusion に表示されていたとおり、10件レコードが登録されていることが確認できました。 いかがでしたでしょうか。CData Connect を使用すると、このように規格を合わせて簡単にデータを連携することが可能になります。CData Connect とは?
例えばOData でしか外部との連携ができないサービスがある場合、CData Connect がデータソースと利用ツール・サービスの間に入ってデータソースへの接続用にODataエンドポイントを作成することで、色々なデータソースをODataでアクセスすることが可能になります。
Google Cloud Data Fusion とは?
以下の記事ではDataFusion でSalesforce → BigQuery の連携をCData JDBC Driver で行っています。DataFusion のインスタンスを作成するところから書いてありますので、ご参考ください。本記事のシナリオ
必要なもの
(トライアルはこちら)手順
CData Connect でDynamics 365(CRM)への接続設定とエンドポイントの作成
Dynamics 365(CRM)への接続設定
※CDataConnect のアカウントがない場合は、以下のリンクよりトライアル申請を行ってください。
CData Connect のユーザー作成
「USERS」→「Add」でユーザーを作成します。
Dynamics 365(CRM)のMySQL用エンドポイントとデータベース名の確認
ただ、データベース名がそれだけでは不明ですので、「DATABASES」をクリックして、Name 列にあるデータベース名を確認します。
MySQL WorkBench から接続
接続方法は通常のMySQL へ接続する内容と全く同じです。
MySQLドライバーのダウンロード
Cloud Data Fusion の作成~設定
Data Fusion のインスタンス作成については、以下の記事を参照してください。
Cloud Data Fusion で Salesforce から BigQuery へデータ連携 - CData Software BlogMySQL JDBC Driver のアップロード
設定が終わったら、Finishをクリックします。
データ連携元の設定
Connection String は以下の形式になります。 select Id, Address1_Country, Address1_StateOrProvince,
Address1_City, Address1_Line1, Address1_PostalCode,
EMailAddress1, Name, NumberOfEmployees, PrimaryContactId_Name,
Revenue, Telephone1, WebSiteURL, ModifiedOn
from DynamicsCRM1.Account;
BigQuery に事前にテーブルを作成
テーブル定義は先ほど表示されたスキーマ情報をもとにカラム名とデータ型を合わせて作成します。
データ連携先の設定
入力が完了したら、上にあるValidate ボタンを押してエラーが出ないことを確認します。
作成したデータパイプラインの実行
おわりに
今回はDynamics 365(CRM)をデータソースとしましたが、CData で提供しているドライバーであれば接続することができますので、例えばMarketo であったり、SAP であったりとさまざまなデータソースをご利用いただけるようになっております。