CData Software Blog

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

Salesforce Connect を使ってスマレジのデータを Salesforce 上でシームレスに参照する:CData Connect

f:id:sugimomoto:20210425234154p:plain

こんにちは。CData Software Japanリードエンジニアの杉本です。

先日 CData Driver ラインナップでも人気のデータソースである「スマレジ」が、SaaS ベースで提供されるデータハブサービス CData Connect に正式追加されました!

今回はこの追加されたスマレジのデータソースを使って、CData Connect が得意とする連携の一つ「Salesforce Connect によるスマレジ連携」を紹介したいと思います。

Salesforce Connect とは?

Salesforce Connect は Salesforce 外に保存されているデータの表示、検索、変更を可能にするフレームワークです。

www.salesforce.com

Salesforceにデータの実体は無いものの、あたかもSalesforce上のデータかのように扱うことができる、仮想オブジェクトと言えるような機能です。

CData Connect とは?

CData Connect は、SaaS ベースで提供されるデータハブサービスです。Salesforce、NetSuite、Dynamics、Marketo、kintone など多様なSaaS にBI、アナリティクス、iPaaS、ノーコード開発プラットフォームからアクセスするための仮想エンドポイントです。連携方法が異なるSaaSMySQLSQL Server、OData の3種類のインターフェースに仮想化することで、データ連携をシンプルに実現します。

"SQL as a Service" といっていいかもしれません。

www.cdata.com

f:id:sugimomoto:20210425233620p:plain

今回は CData Connectが持つ3つのインターフェースのうちの一つである「OData」を使って、Salesforce Connectと連携します。

これにより、例えば以下のようなスマレジの商品データや会員データなどを

f:id:sugimomoto:20210425233628p:plain

Salesforce上のデータかのうようにシームレスに扱うことができるようになります。

f:id:sugimomoto:20210425233637p:plain

接続手順

それでは早速手順を解説していきます。

CData Connect にSalesforce データを接続

まず CData Connect (旧CloudHub) のアカウントを取得します。

CData Connect はSaaS ですので、アカウントを取得したらインストールやホスティングなどなく、ブラウザからログインすることですぐに使用開始です。

早速ブラウザからCData Connect にログインします。「DATABASE」タブから仮想データベースを設定していきます。まずは接続するデータソースであるスマレジ のアイコンをクリックします。

f:id:sugimomoto:20210425233644p:plain

データソース接続画面が開くので、データソース毎の認証情報を入力します。スマレジ の場合はAccess Token、Contract Id を入力することでデータにアクセスすることができます。

Access Token、Contract Id の取得方法は以下の記事を参考にしてみてください。

www.cdatablog.jp

f:id:sugimomoto:20210425233650p:plain

スマレジの接続を追加後、Salesforceと連携したいスマレジのデータソースをODataのテーブルとして定義します。

「ODATA」タブに移動し「Add Tables」をクリック

f:id:sugimomoto:20210425233656p:plain

先程作成したスマレジのDatabaseを選択し

f:id:sugimomoto:20210425233702p:plain

任意のテーブルを選択します。今回は会員データが可能されている「Customers」を選択しました。

各テーブルの詳しい情報は、以下のヘルプで参照できます。

http://cdn.cdata.com/help/UXF/jp/jdbc/pg_alltables.htm

f:id:sugimomoto:20210425233708p:plain

次に公開するOperation(操作方法)とカラムを選択します。今回はデフォルトのまま進めます。

f:id:sugimomoto:20210425233713p:plain

追加が完了すると、APIタブでODataのエンドポイントとして対象のリソースが公開されます。

f:id:sugimomoto:20210425233719p:plain

最後に公開したデータにアクセスできるユーザーとトークンを作成します。「USERS」タブからユーザーを作成するとトークンが生成されます。

f:id:sugimomoto:20210420092655p:plain

Salesforce Connectの設定

続いて Salesforce Connect 側の設定を行いましょう。Salesforce Connectの設定は外部データソースの定義から行います。

Salesforceの設定画面に移動し、「インテグレーション」→「外部データソース」をクリックします。

f:id:sugimomoto:20210425233726p:plain

外部データソース一覧から「新規外部データソース」を選択し

f:id:sugimomoto:20210425233731p:plain

以下のようにCData Connectへの接続情報を入力し、保存します。

プロパティ名 備考
外部データソース 例)CDataConnect 任意の外部データソース表示名を指定します。
名前 例)CDataConnect 外部データソースの一意名称を指定します。
種別 Salesforce Connect: OData 4.0 OData 4.0を指定します。
URL 例)https://www.cdatacloud.net/salesforce/api.rsc/ CData Connect の ODataエンドポイントを指定します。
ID種別 指定ユーザ
認証プロトコル パスワード認証
ユーザ名 例)admin CDataConnectで作成したユーザーのIDを指定します。
パスワード 例)YOUR_PASSWORD CDataConnectで作成したユーザーのトークンを指定します。

f:id:sugimomoto:20210425233740p:plain

保存後、外部オブジェクトを作成します。

外部オブジェクトは手動で作成してマッピングする方法と、OData の Metadataから読み取って自動的に生成する方法の2パターンが存在します。

今回は前者の方法で自動的に外部オブジェクトを生成してみます。「検証して同期」をクリックします。

f:id:sugimomoto:20210425233747p:plain

うまく接続が成功していればここで先程定義したテーブルの一覧が表示されます。該当のテーブルを選択して、「同期」を行います。これで外部オブジェクトが生成されます。

f:id:sugimomoto:20210425233752p:plain

外部オブジェクトの画面に移動すると、生成された外部オブジェクトが確認できます。

f:id:sugimomoto:20210425233758p:plain

合わせてタブの設定で生成した外部オブジェクトを表示するように設定しておきましょう。

f:id:sugimomoto:20210425233805p:plain

これで、Salesforce 上のデータかのようにスマレジのデータが扱えるようになりました。

f:id:sugimomoto:20210425233812p:plain

表示項目も調整すると、しっかりとデータが参照できていることがわかります。

f:id:sugimomoto:20210425233819p:plain

TransactionHeads を表示する場合のポイント

最後にいくつかスマレジデータをSalesforce Connect上で扱うためのTipsを紹介します。

TransactionHeads:取引データに関しては、データの更新機能の都合上CData Connet上で複合キーのようにデータが設定されています。

しかしながら、Salesforce Connect上では一つのキーしか認められていないため、この定義が邪魔になってしまいます。

f:id:sugimomoto:20210425233827p:plain

そこで以下のようにTansactionHeadを一意に指定できる「TransactionHeadId」の項目だけをキーにすることでSalesforce上でも正常にデータを表示できるようになります。

f:id:sugimomoto:20210425233832p:plain

キーの調整方法ですが、以下のようにテーブルの編集ボタンをクリックすることで実行できます。

f:id:sugimomoto:20210425233838p:plain

このテーブル定義の中で各カラムのキー情報「key="true"」という項目が存在するので、「TransactionHeadId」のみをKeyとして設定しましょう。

f:id:sugimomoto:20210425233845p:plain

また、TransactionHeadsでもう一つ注意しなければいけないのは、APIの制約です。

TransactionHeadsは必ずデータの取得に条件をつけなければいけません。

例えばTransactionDateTimeの日付で30日間の範囲の指定をしなければいけません。そのため、普通に一覧を表示しようとするとエラーメッセージが表示されます。

この回避方法は簡単で、以下のように検索条件で日付の範囲指定をすれば、データを取得することができます。

f:id:sugimomoto:20210425233851p:plain

他にも複合キーが存在するテーブルがいくつかあるので、データを表示する際は注意しましょう。