CData Connect とは?
CData Connect は、SaaS ベースで提供されるデータハブサービスです。Salesforce、NetSuite、Dynamics、Marketo、kintone など多様なSaaS にBI、アナリティクス、iPaaS、ノーコード開発プラットフォームからアクセスするための仮想エンドポイントです。連携方法が異なるSaaS をMySQL、SQL Server、OData の3種類のインターフェースに仮想化することで、データ連携をシンプルに実現します。
"SQL as a Service" といっていいかもしれません。
この記事では、Salesforce をMySQL エンドポイントに仮想化して、MySQL Workbench からリアルタイムSalesforce データをCRUD します。
CData Connect を使うポイント
クラウドサービスとして提供され、これ一つでSalesforce でもMarketo でもNetSuite でもCData Connect がサポートするコネクタに同じインターフェースでつなぐことができます。
MySQL ワイヤプロトコルに準拠。MySQL データベースにアクセスする方法でCData Connect 経由でSaaS にアクセス可能です。
CData Connect がSaaS データ(通常はJSON やXML)をカラムとレコードを持ったテーブルにモデル化。メタデータの検出・付与までを行います。Salesforce やkintone のようにカスタムオブジェクトを持つデータソースでもメタデータの動的検出を行います。
CData Connect にSalesforce データを接続
CData Connect (旧CloudHub) のアカウントを取得します。CData Connect はSaaS ですので、アカウントを取得したらインストールやホスティングなどなく、ブラウザからログインすることですぐに使用開始です。
早速ブラウザからCData Connect にログインします。「DATABASE」タブから仮想データベースを設定していきます。まずは接続するデータソースであるSalesforce のアイコンをクリックします。
データソース接続画面が開くので、データソース毎の認証情報を入力します。Salesforce の場合はUser、Password、Security Token を入力することでデータにアクセスすることができます。
次に「ENDPOINTS」タブで、このデータをどのインターフェースのエンドポイントして公開するかを選択します。デフォルトで、OData、MySQL wire protocol、TDS(SQL Server) wire Protocol がすべて有効になっています。
必要があればアクセスを許可する信頼されたIP アドレスを指定することも可能です。
最後に公開したデータにアクセスできるユーザーとトークンを作成します。「USERS」タブからユーザーを作成するとトークンが生成されます。
これでCData Connect でSalesforce データを扱う準備ができました。
MySQL Workbench でCData Connect 経由でSalesforce をCRUD
MySQL Workbench からCData Connect に接続
Workbench にて新しいデータベース接続を作成します。ここにMySQL データベースとしてCData Connect のクレデンシャルを入力します。
Conection Name:任意
Connection Method: Standard (TCP/IP)
Hostname: CData Connect のMySQL エンドポイント xxxxx.cdatacloud.net
Port: 3306
Username: CData Connect のユーザー名
Password: CData Connect のパスワード
「Test Connection」で接続を確認します。接続の成功が確認できたらOK を押して接続を確立します。
Salesforce データのSELECT
左のSCHEMAS ペインに、CData Connect で有効になっているエンドポイントが表示されます。今はDynamicsCRM1、Kintone1、Kintone2、Salesforce1のエンドポイントが表示されていますね。
Salesforce1 のエンドポイントを開くとTable としてSalesforce のオブジェクトがモデル化されて表示されます。
さっそく、「Account(取引先)」テーブルをSELECT してみます。通常のSQL でデータを操作することができます。
SELECT * FROM Salesforce1.Account;
SELECT 結果がグリッドで確認できます。実際のSalesforce のブラウザ画面で確認できる情報と同じ結果が返ってきました。
もちろんWHERE 句でのフィルタリングができます。
SELECT * FROM Salesforce1.Account WHERE Type = 'Customer - Direct';
集計関数でCOUNT したり、最大、最小、平均、合計を求めることもできます。
SELECT COUNT(*) FROM Salesforce1.Account WHERE Type = 'Customer - Direct';
並び替えも当然できます。
SELECT Name, NumberOfEmployees FROM Salesforce1.Account ORDER BY NumberOfEmployees DESC;
Salesforce のオブジェクト間のJOIN クエリも可能です。AccountとOpportunity をINNER JOIN してみます。
SELECT Account.Id, Account.Name, Account.Fax, Opportunity.AccountId, Opportunity.CloseDate FROM Salesforce1.Account INNER JOIN Opportunity ON Account.Id = Opportunity.AccountId
このように多様なSQL をSalesforce データに対して発行することが可能です。
Salesforce にINSERT
書き込み系の処理も可能です。MySQL Workbench で以下のようにSalesforce のAccount(取引先)に対して、レコードのINSERT を実行します。
INSERT INTO Salesforce1.Account (Name) VALUES ('Test ssss')
Salesforce の画面で確認するとたしかに新しい取引先が追加されました。
Salesforce データをUPDATE
今度はMySQL Workbench からSalesforce のデータをUPDATE します。これもSQL で処理を実行します。
UPDATE Salesforce1.Account SET Name = 'Test pppp' WHERE Id = 0012r000005U9pUAAS
Salesforce 画面で確認するとレコードが更新されています。
Salesforce データをDELETE
最後にMySQL Workbench からSalesforce のデータをDELETE します。
DELETE FROM Salesforce1.Account WHERE Id = 0012r000005U9pUAAS
このように、MySQL データベースと同感覚でCData Connect を経由してSalesforce データをリアルタイムでCRUD することができました
CData Connect で何ができるの?
Salesforce などのSaaS データをCData Connect がMySQL に仮想化してくれると何ができのでしょうか?CData Connect を使うことで、MySQL インターフェースを持つあらゆるクラウド・オンプレアプリケーションからSalesforce などの多様なSaaS にSQL だけで接続を実現することができます。
例えば、Google Data Studio、Google Cloud Data Fusion、Tableau Online をはじめ多くのBI、アナリティクス、ETL ツールからネイティブでは接続できない多様なデータソースにシームレスにアクセスすることが可能になります。
以下にそれぞれのツールからのCData Connect の利用記事がありますので参考にしてください。