iPaaS SnapLogic を使って SendGrid と外部サービスを連携させてみる:SnapLogic & CData JDBC Driver

f:id:sugimomoto:20211015164310p:plain

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

今回はガートナーの Magic Quadrant でも取り上げられている Enterprise 向け iPaaS・SnapLogicとCData JDBC Driver を組み合わせて、メール配信サービスの SendGrid を利用する方法を紹介したいと思います。

www.snaplogic.com

SnapLogic とは?

SnapLogic はノーコードでデータインテグレーションのフローを作成することができる、Enterprise 向けのiPaaSです。

www.snaplogic.com

f:id:sugimomoto:20211015164315p:plain

iPaaS名前が出てくる前、2006年から設立され、EAI・ETLとしてサービスを提供していたので、昨今流行りのSaaSだけでなく、レガシーなデータベースやHadoop周りのビッグデータ処理サービスなどにも接続先としてサポートしているのが特徴的だと思います。

2019年に大型の資金調達を行って話題にも上がっていましたね。

techcrunch.com

ブロックスタイルでフローを組み立てる感じのUIで開発することができます。IN/OUT・処理が直感的にわかりやすいのが良いですね。

f:id:sugimomoto:20211015164321p:plain

さらに、データベースにJDBC経由で接続できるコネクタが含まれており、CData JDBC Driver と組み合わせることで、CData が対応している様々なデータソースとの接続を拡張することができるようになります。

www.cdata.com

今回の記事ではこのJDBC接続とCData JDBC Driver を使って、SnapLogic から SendGrid に接続する方法を紹介します。

シナリオ

今回は前述の通り、SnapLogic を用いて Sendgrid のデータを他のサービスと連携させます。対象の外部サービスはBigQueryを選んでみました。

f:id:sugimomoto:20211015164327p:plain

最終的に作成するフローは以下のようなイメージです。

f:id:sugimomoto:20211015164332p:plain

SnapLogic でも数多くのコネクターが提供されていますが、現状はSendGridのコネクターが提供されていません。

docs-snaplogic.atlassian.net

しかしながら、標準で備えているJDBC コネクターとCData JDBC Driver ラインナップを組み合わせることで、SnapLogicが標準で接続できないクラウドサービスやNoSQLへの連携も可能にします。

例えば、国産クラウドサービスのkintoneやSansanには対応していないので、ここをCData JDBC Driverで橋渡しすることができます。

www.cdata.com

f:id:sugimomoto:20211015164337p:plain

手順

CData SendGrid JDBC Driver のインストール・セットアップ

まず、CData SendGrid JDBC Driverをダウンロード・セットアップします。

CData SendGrid JDBC Driver は以下のURLから30日間のトライアル版が入手できます。

www.cdata.com

f:id:sugimomoto:20211015164343p:plain

インストーラーを立ち上げると、以下のような画面になるので、ダイアログに従ってセットアップを完了してください。

f:id:sugimomoto:20211015164350p:plain

セットアップが完了すると以下のようにDriver本体となる「jar」ファイルが所定のフォルダに生成されます。

これを SnapLogic をアップロードして、SendGrid 接続を利用できるようにします。

f:id:sugimomoto:20211015164354p:plain

コネクションの作成

それでは、SnapLogic から SendGrid へのコネクションを作成していきましょう。

SnapLogic では以下のJDBC コネクターを使っていきます。

まずはデータ取得のためのコネクター「Generic JDBC - Select」を配置します。

f:id:sugimomoto:20211015164402p:plain

配置後、「Account」タブを選択して、接続情報を追加します。

「Add Account」をクリックし

f:id:sugimomoto:20211015164406p:plain

「Continue」をクリックします。

f:id:sugimomoto:20211015164413p:plain

ここでJDBCの接続情報を追加しますが、まずは接続に利用するJDBC Driver本体をアップロードしましょう。

以下のJDBC JARsからデータベースのアイコンをクリックします。

f:id:sugimomoto:20211015164419p:plain

「Upload File」ボタンをクリックして、対象のJDBC Driverを選択しましょう。

f:id:sugimomoto:20211015164424p:plain

SendGrid JDBC Driver は「C:\Program Files\CData\CData JDBC Driver for SendGrid 2021J\lib」のフォルダに配置されています。

f:id:sugimomoto:20211015164428p:plain

アップロードしたら、必要な項目を入力します。

各プロパティの詳しい解説は以下のヘルプページでも解説しています。

cdn.cdata.com

プロパティ名 備考
Label 例)CData JDBC Driver Account のラベルを入力します。
JDBC Driver cdata.jdbc.sendgrid.jar 対象のJDBC jarファイルを指定します。
JDBC Driver Class cdata.jdbc.sendgrid.SendGridDriver JDBC SendGrid Driverのクラス名を指定します。
JDBC Url jdbc:cdata:sendgrid:APIKey=abc123;RTK=XXX; SendGridに接続するための接続文字列を指定します。

RTKはトライアルキーになります。詳しくはCData テクニカルサポートデスクまでお問い合わせください。

f:id:sugimomoto:20211015164433p:plain

入力後、「Validate」をクリックしてOKであれば、「Apply」をクリックして適用します。

続いて、データを取得するための諸条件を指定しましょう。

今回はSendGridのRecipients(受信者リスト)を取得してみます。

Table name に「Recipients」を指定し、Output fieldsで取得したい項目をそれぞれ指定していきます。取得できる項目に関しては、以下のヘルプを参照してみてください。必要に応じて他の諸条件も指定できます。

cdn.cdata.com

f:id:sugimomoto:20211015164438p:plain

接続設定が完了したら、データをプレビューしてみましょう。

以下のようにコネクタの末尾をクリックするとプレビュー画面に移動します。

f:id:sugimomoto:20211015164442p:plain

以下のようにデータが取得できていればOKです。

f:id:sugimomoto:20211015164447p:plain

取得したデータをBigQuery に流し込んで見る

それでは、SendGridから取得したデータをBigQuery に流し込んでみましょう。今回はBigQuery 上にあらかじめ以下のようなテーブルを作成しておきました。

f:id:sugimomoto:20211015164452p:plain

SnapLogicでは標準のBigQuery コネクターが存在するので、今回はこの中の「Google BigQuery Write」を利用しました。

f:id:sugimomoto:20211015164457p:plain

フローを配置したら、「Account」タブからコネクションを「Google BigQuery OAuth2」で追加します。

f:id:sugimomoto:20211015164501p:plain

必要な情報を入力して、コネクションを確立すると、OAuthプロセスが開始され、ログインが完了します。

f:id:sugimomoto:20211015164505p:plain

Accountの作成が完了したら、「Settings」タブで連携先となるBigQuery のProjectIDやDataset ID、Table IDをそれぞれ指定します。

f:id:sugimomoto:20211015164510p:plain

BigQuery のコネクションを作成したら以下のように先程構成したSendGrid の JDBC コネクタと接続しましょう。

f:id:sugimomoto:20211015164515p:plain

フローができたら画面右上の実行ボタンをクリックすることでフローを手動で動かすことができます。

f:id:sugimomoto:20211015164519p:plain

実行完了後、BigQuery を確認してみると、正常にデータが取り込まれていました。

f:id:sugimomoto:20211015164524p:plain

ちなみに今回はBigQuery のテーブルとカラムを一致させていたのでストレートに流し込みましたが、Mapperを使って項目を組み替えることも可能です。

f:id:sugimomoto:20211015164529p:plain

データの Insert

なお、今回はデータの取得のフローでJDBC Driverを利用しましたが、「Generic JDBC - Insert」を利用することで、SendGridにデータを書き込むことも可能です。

f:id:sugimomoto:20211015164535p:plain

設定はシンプルで対象のテーブルをTable Nameで指定し

f:id:sugimomoto:20211015164539p:plain

Mapperでマッピングするだけです。

f:id:sugimomoto:20211015164543p:plain

おわりに

このようにCData JDBC Driver と SnapLogicを組み合わせることで、簡単にサポートされていないサービスへの接続を拡張させることができます。

他にも様々なデータソース用コネクターがありますので、ぜひ自社で使っているサービスと合わせて試してみてください。

www.cdata.com

f:id:sugimomoto:20211015164337p:plain

トライアル・お問い合わせ

関連コンテンツ