CData Software Blog

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

GCP内で完結!BigQuery にSaaS データをローディングする構成について

本記事はBigQuery Advent Calendar 2020 22日目の記事です。
qiita.com

f:id:sennanvolar44:20201220223133p:plain

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

2020年もあっという間に終わろうとしていますが、この1年を思い返してみると、感覚的に去年に比べてBigQuery を軸にした相談を受けることが多くなってきたと思います。

「複数のSaaS データをBigQuery に集約させたい」
Salesforce のデータをBigQuery にローディングしたい」
「オンプレのデータをBigQuery にもっていきたい」
「BigQuery に・・・」
「BigQuery から・・・」

それに加えて、構成自体はGCP 内で完結させたい という条件もセットでいただきましたね。

ということで、BigQuery にSaaS データをローディングするにはどんなサービスを使用して行えるのか、「SaaS to BigQuery」をGCP 上で完結できるパターンでいくつかご紹介したいと思います。

各サービスによる「SaaS to BigQuery」の構成パターン

GCP ではデータパイプラインを行えるサービスがいくつかあります。
その中で、Apache Beam SDK で構築したパイプラインを実行できる「Dataflow」、ノーコードETLサービスの「Data Fusion」、GCE 上にサードパーティELT ツール*をホスティングするCData Sync on GCE にフォーカスしてみていきます。
ELT ツールにはCData Sync を使用

サービス ETL/ELT SaaS
ソース
特徴 料金
Dataflow ETL なし
*JDBCで実現
コードで
パイプライン作成可
実行時間
Data Fusion ETL 一部あり GUI でパイプラ
イン作成
インスタンス作成後から測定
CData Sync on GCE ELT ビルトイン 差分データの連携が可 サブスクリプション

Dataflow

コードでパイプラインを作成できるので、BigQuery にローディングする前に複雑な処理を行いたい場合に向いています。

Dataflow 単体ではSalesforce やMarketo へのコネクタは用意されていませんが、サードパーティJDBC Driver を利用することができます。

例えばSalesforce のデータを取得するとして、どこかからサードパーティSalesforce JDBC Driver をダウンロードします。(CData ではここからダウンロードできます)
ローカルでパイプラインを作成する場合はSalesforce JDBC Driver をインストールして、コードでそのままJDBC Driver を利用します。

それとは別に、Dataflow では「JDBC to BigQuery」テンプレートが用意されています。これを利用することで、特段コードを書く必要なくBigQuery へのローディングを実現することができます。
f:id:sennanvolar44:20201220220611p:plain

この場合、GCS にSalesforce JDBC Driver を配置し、Dataflow のパイプライン定義から直接パスを指定することで利用できます。

以下は「JDBC to BigQuery」テンプレートを利用したときの設定値です。テンプレを使うとこれくらいの設定値だけでおわりです。Cloud Scheduler と組み合わせて定期実行も可能ですね。
f:id:sennanvolar44:20201220073636p:plain

JDBC to BigQuery」テンプレートで利用した際の記事は以前書いていますので、よろしければご参照ください。

www.cdatablog.jp

DataFusion

ちょっとDataflow では敷居が高いんだけど、BigQuery へのローディングは行いたい、手軽にデータパイプラインを作成して使ってみたい場合はDataFusion ではないでしょうか。
Data Fusion 自体はフルマネージドなサービスなので、インスタンスを作成してしまえばあとはGUI 上でデータパイプラインを作成することだけに注力できます。

なお、BigQuery へのデータローディングをはじめ、データ加工用のコネクタも多数用意されています。また、SaaS 向けのプラグインもいくつかあるようですね。
f:id:sennanvolar44:20201220080208p:plain

Data Fusion ではJDBC Driver をアップロードできるので、Dataflow と同じようにサードパーティJDBC Driver を用意することで利用することができるようになっています。
f:id:sennanvolar44:20201220075542p:plain

JDBC Driver が利用できれば、このようにGUI 上でポチポチとBigQuery へのデータパイプラインを作成することができます。
f:id:sennanvolar44:20201220080611p:plain

Datafusion についても、インスタンス作成からJDBC Driver のアップロード、BigQuery への連携までを書いています。
www.cdatablog.jp

2019 年に出たばかりのサービスなので、どんどん機能追加がされていく可能性に秘めたサービスではありますね。

CData Sync on GCE

最後はGCE にELT ツールのCData Sync をホスティングする「CData Sync on GCE」 の構成です。
GCE のOS に指定はなく、CentOSでもWindows でもどこでもインストールやWebアプリケーションをデプロイして利用可能です。

インストール型なので、もし現在GCE を使用している場合は、そこに一つアプリケーションを追加するだけでOKですね。

もしくは、CData Sync ではジョブ作成や実行などのAPI が自動で生成されるので、これを利用して他のサービスからAPI リクエストを行ってバックエンドで動かすなんてことも可能です。
f:id:sennanvolar44:20201220213142p:plain

機能の特徴は、基本的にGUI で操作することに加え、前回ローディングした内容からの差分データだけをBigQuery にローディングする差分連携機能もあります。

これはCData Sync のジョブ画面です。こんな感じでSQL を作成して実行しています。
f:id:sennanvolar44:20201220213900p:plain

その他、ELT ツールですのでコネクタ部分は充実しており、日本国内のSaaS 向けコネクタも随時追加されています。
f:id:sennanvolar44:20201220211540p:plain

という感じで、GCE にELT ツールをホスティングする方法もある種GCP 上で完結できる方式ですね。

番外偏として、最近話題のDataform もこのCDataSync から呼び出すことが可能です。ジョブ実行後の処理にDataform の呼び出しを指定することで、続けてDataform で定義したBigQuery 上の変換処理を行うこともできます。
f:id:sennanvolar44:20201220225708p:plain 詳しくはこちらをどうぞ。

www.cdatablog.jp

おわりに

いかがでしたでしょうか。
今回はBigQuery にSaaS データをローディングするには!?という角度の内容でご紹介しました。今回の内容以外にもGCPSaaS to BigQuery 行う構成はあると思いますが、SaaS にため込んでるデータをBigQuery でも活用したい」 そんなときには今回紹介した方法も1つ参考にいただければ嬉しいです。