本記事はBigQuery Advent Calendar 2020 22日目の記事です。
qiita.com
こんにちは!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 へのローディングを実現することができます。
この場合、GCS にSalesforce JDBC Driver を配置し、Dataflow のパイプライン定義から直接パスを指定することで利用できます。
以下は「JDBC to BigQuery」テンプレートを利用したときの設定値です。テンプレを使うとこれくらいの設定値だけでおわりです。Cloud Scheduler と組み合わせて定期実行も可能ですね。
「JDBC to BigQuery」テンプレートで利用した際の記事は以前書いていますので、よろしければご参照ください。
www.cdatablog.jp
DataFusion
ちょっとDataflow では敷居が高いんだけど、BigQuery へのローディングは行いたい、手軽にデータパイプラインを作成して使ってみたい場合はDataFusion ではないでしょうか。
Data Fusion 自体はフルマネージドなサービスなので、インスタンスを作成してしまえばあとはGUI 上でデータパイプラインを作成することだけに注力できます。
なお、BigQuery へのデータローディングをはじめ、データ加工用のコネクタも多数用意されています。また、SaaS 向けのプラグインもいくつかあるようですね。
Data Fusion ではJDBC Driver をアップロードできるので、Dataflow と同じようにサードパーティのJDBC Driver を用意することで利用することができるようになっています。
JDBC Driver が利用できれば、このようにGUI 上でポチポチとBigQuery へのデータパイプラインを作成することができます。
Datafusion についても、インスタンス作成からJDBC Driver のアップロード、BigQuery への連携までを書いています。
https://www.cdata.com/jp/blog/2019-08-22-113648
2019 年に出たばかりのサービスなので、どんどん機能追加がされていく可能性に秘めたサービスではありますね。
CData Sync on GCE
最後はGCE にELT ツールのCData Sync をホスティングする「CData Sync on GCE」 の構成です。
GCE のOS に指定はなく、CentOSでもWindows でもどこでもインストールやWebアプリケーションをデプロイして利用可能です。
インストール型なので、もし現在GCE を使用している場合は、そこに一つアプリケーションを追加するだけでOKですね。
もしくは、CData Sync ではジョブ作成や実行などのAPI が自動で生成されるので、これを利用して他のサービスからAPI リクエストを行ってバックエンドで動かすなんてことも可能です。
機能の特徴は、基本的にGUI で操作することに加え、前回ローディングした内容からの差分データだけをBigQuery にローディングする差分連携機能もあります。
これはCData Sync のジョブ画面です。こんな感じでSQL を作成して実行しています。
その他、ELT ツールですのでコネクタ部分は充実しており、日本国内のSaaS 向けコネクタも随時追加されています。
という感じで、GCE にELT ツールをホスティングする方法もある種GCP 上で完結できる方式ですね。
番外偏として、最近話題のDataform もこのCDataSync から呼び出すことが可能です。ジョブ実行後の処理にDataform の呼び出しを指定することで、続けてDataform で定義したBigQuery 上の変換処理を行うこともできます。
詳しくはこちらをどうぞ。
www.cdatablog.jp
おわりに
いかがでしたでしょうか。
今回はBigQuery にSaaS データをローディングするには!?という角度の内容でご紹介しました。今回の内容以外にもGCP でSaaS to BigQuery 行う構成はあると思いますが、「SaaS にため込んでるデータをBigQuery でも活用したい」 そんなときには今回紹介した方法も1つ参考にいただければ嬉しいです。
関連コンテンツ