CData Software Blog

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

ELTツールのAIRBYTEとCDataConnectでSaaSデータをBigQueryに連携してみた

こんにちは、CData Software Japan エンジニアの宮本です。

つい先日この記事や Twitter 上で AIRBYTE というオープンソースELT ツールの存在を知りました。

jp.techcrunch.com

ということで早速触ってみましたが、結構簡単に確認できました。

そこで、CData のデータハブサービスである CData Connect と AIRBYTE で、SaaS データを BigQuery にデータ転送する内容を今回はご紹介していきます!

追加情報ですが、3/3 に520万ドルの資金調達をしたと発表がありましたね。

techcrunch.com

AIRBYTEとは?

AIRBYTE とは さまざまなデータソースからデータをデータベースに転送できるツール、いわゆる ELT ツールです。オープンソースということで、未対応のコネクタなどもカスタムコネクタとして自ら作成してしまえることも特徴的な部分になります。またコネクタと本体側(GUI)が分離されているので、コネクタの入れ替えもコネクタ用のコンテナを差し替えるだけとなっているようです。

f:id:sennanvolar44:20210219154905p:plain https://airbyte.io/

対応データソースもよく見かけるものは押さえている印象を受けました。(SalesforceやMarketo、Google Analytics や Sendgrid など)

連携先も BigQuery や Snowflake などのクラウドDWH系は接続できる感じですね。

価格はコミュニティ版だとフリーで使用できるようですが、有料版で2つライセンスがあるようです。コネクタの数でこの辺が変わってくるようです。
Pricing - Airbyte - Open-source Data Integration

CData Connect とは?

さまざまなクラウドサービスのデータをOData、MySQLSQLServer の3つの規格で接続できるインタフェースが提供されるSaaS 型のサービスです。 例えばOData でしか外部との連携ができないサービスがある場合、CData Connect がデータソースと利用ツール・サービスの間に入ってデータソースへの接続用にODataエンドポイントを作成することで、色々なデータソースをODataでアクセスすることが可能になります。

https://www.cdata.com/cloudhub/ f:id:sennanvolar44:20201020163116p:plain

やってみること

f:id:sennanvolar44:20210303223016p:plain
やってみることは SaaS データをBigQuery に転送するという内容です。(今回はSalesforce ですが他のデータソースでもOK)

構成は SaaS と BigQuery の間に、AIRBYTE とデータハブの「CData Connect」を置いています。Salesforce とのやりとりを CData Connect が行い、AIRBYTE ではCData Connect と BigQuery の接続設定を行ってジョブを作成するイメージになります。

少しわかりずらいですが、CData Connect は OData や MySQLSQLServer のインタフェースを提供しているので、AIRBYTE では MySQL コネクタを使用して接続しにいきます。

なお、AIRBYTE は Docker コンテナとして提供されているので、今回はローカル端末上で使ってみます。

手順

それではさっそく CData Connect から Salesforce への接続部分を行っていきましょう。

CData Connect での設定

まずは CData Connect への設定部分になりますが、別記事でも設定方法について書かれていますのでこちらをご参照ください。

www.cdatablog.jp

違いはSalesforce の設定方法だけになりますが、以下のように設定いただくだけですね。
f:id:sennanvolar44:20210219170416p:plain

AIRBYTE のダウンロード&起動

まず最初に確認することは、Docker と DockerCompose がインストールされているかになります。AIRBYTE ではそれぞれが Docker コンテナとして独立しているので、DockerCompose で起動をかける必要があります。
Windows 版ですが手順はコチラ。

Windows に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント

ではAIRBYTE の方になりますが、手順は公式ドキュメントに書かれていますので、これ通りに進めます。
Getting Started - Airbyte Documentation

インストール自体が完了しましたら、AIRBYTE のリポジトリをgit clone でダウンロードします。

git clone https://github.com/airbytehq/airbyte.git
cd airbyte
docker-compose up

以下の文字が表示されたら起動成功ですので、 f:id:sennanvolar44:20210219173939p:plain

http://localhost:8000/ にアクセスしてみると、TOP 画面が表示されます。(既にジョブを作成してましたのでデータソースが1つ存在しています)
f:id:sennanvolar44:20210219174712p:plain

AIRBYTE で接続設定

CDataConnect への接続(データソース)

まずは CData Connect への接続設定を行います。CData Connect の MySQL インタフェースにアクセスするので、AIRBYTE では MySQL コネクタを選択して設定していきます。

右側の「+ new source」をクリックします。
f:id:sennanvolar44:20210219175041p:plain

CData Connect への接続設定を行います。
最初は上2つの項目しか表示されていません。2つ目のソースタイプを選択することで表示内容が変わるようです。今回は MySQL を選択します。
f:id:sennanvolar44:20210219175435p:plain

なお、各設定値はCData Connect の設定値を参照しながら行います。

項目名 設定値
host CData Connect のポート部分を削ったMySQLエンドポイント
port 上記のポート部分
database CData Connect の仮想データベース名
パスワード 上記ユーザーのパスワード
ユーザー名 CData Connect で作成したユーザー名

host、portの設定値
ここに表示されているURLを設定する。ポートは別に指定するのでここでは含めない。
f:id:sennanvolar44:20210226153556p:plain

databaseの設定値
f:id:sennanvolar44:20210226153814p:plain

user、passwordの設定値
f:id:sennanvolar44:20210226154139p:plain

入力後、「Set up source」をクリックします。
f:id:sennanvolar44:20210226154911p:plain

接続が完了すると、同期先の接続設定画面が表示されますので、「add destination」をクリックします。
f:id:sennanvolar44:20210226160220p:plain

BigQuery への接続(同期先)

既に作成済みの接続先はこのようにリストに表示されるようですが、今回は新規で作成していきますので赤枠の部分をクリックします。
f:id:sennanvolar44:20210226160529p:plain

BigQuery への接続情報を設定していきます。サービスアカウントでの接続しかサポートしていないようなので、GCP よりサービスアカウントのJSONタイプの鍵をダウンロード後、中身を Credentials JSON に設定します。
設定後は「Set up destination」をクリックして完了です。
f:id:sennanvolar44:20210226162328p:plain

ボタンクリック後、データソースのスキーマ情報を取得したりでしばらくこの状態になります。
f:id:sennanvolar44:20210226162731p:plain

転送内容の設定

少し経つと、Salesforce のオブジェクト情報がテーブルとして一覧に表示されます。この内容は、CData Driver で取得しているものと同じものになりますので、気になる方はヘルプをご参照下さい。

CData JDBC Driver for Salesforce - Tables

全テーブル選択されていますが、今回はAccount テーブルだけを選択してみます。

f:id:sennanvolar44:20210226163030p:plain

選択しましたら、画面下部に移動します。そこでは手動実行かスケジュール実行かを選択できるようになっていますので、手動実行の manual を選択します。選択後、右下にあるボタンをクリックしてジョブ設定が完了となります。
f:id:sennanvolar44:20210226163942p:plain

ジョブの実行

作成したジョブが表示されますので、ジョブをクリックしてみます。
f:id:sennanvolar44:20210226164436p:plain

Sync now ボタンをクリックします。
f:id:sennanvolar44:20210226164605p:plain

少し待つとステータスが Running から Succeeded に変わり、ジョブが完了したことがわかりました。 f:id:sennanvolar44:20210226165038p:plain

ではSalesforce のデータが BigQuery に転送されのか実際にBigQuery コンソールで確認してみましょう!

指定したデータセットに2つのテーブルが作成されていますが、赤枠の方のテーブルがそのまま利用できるものになります。また、先頭2つのカラムは AIRBYTE で自動的に追加されるもののようですね。
f:id:sennanvolar44:20210226165527p:plain

というのも、 "airbyte_raw" と先頭に付与されているテーブルでAIRBYTE から直接データを受けた後に、そのテーブルをもとにデータの正規化を行い別テーブルを生成しているようで、その正規化した際の時刻がこの先頭2つのカラムにセットされるようです。

ちなみにAIRBYTE では "_airbyte_raw_xxxxxxx" というテーブルからデータを正規化する際に、DBT というデータ変換のツールを内部で使っているということで、データの変換方法などはDBTのドキュメントを参照すると良いかもしれませんね。
DBT: https://www.getdbt.com/product/

おわりに

今回は Salesforce を選択しましたが、同じ構成をとることで「Dynamics → DB」、「HubSpot → DB」などのように簡単に対応データソースを増やすことができるようになります。
現時点で対応しているデータソースはこちらから確認できます。

CData Software Japan - CData Connect Connectors

こちらトライアルが可能ですので、ぜひ AIRBYTE との連携と一緒にお試しください。