dbt Cloud はSaaS のデータ変換ツールで、標準SQL ベースでDB/DWH 上のデータを手軽に変換でき、データパイプラインに組み込んだCI/CD を実現できます。いわゆるモダンデータスタックに欠かせないツールとして、ここしばらくデータエンジニアリング界隈で注目されています。
CData Sync はCData が提供するノーコードで手軽にデータパイプラインを構築できるELT ツールですが、V23 アップデートにて、dbt Cloud を使ったデータ変換に対応しました!ということで、今回は実際にSalesforce(データソース)、BigQuery(DWH)、Looker Studio(BI ツール)を使ってdbt Cloud を組み込んだデータパイプラインを作ってみます。構成を図示すると以下のようになります。
ちなみに、dbt Core との連携機能についてはこちらの記事をご確認ください。
dbt Cloud とは?
dbt Cloud はdbt Labs, Inc が提供するデータ変換ツールで、DB やDWH にあるデータを変換して、データ分析やBI での可視化など、実務で使える形に落とし込むのに便利です。変換にはおなじみのSQL に加えて、Jinja というテンプレートエンジンを利用することもでき、SQL の中で変数を定義したりif 文を書いたりといったことが可能です。また、クラウド(SaaS)版にはGit レポジトリや開発用IDE がついているので、データエンジニアリング環境を手軽に作成することができます。
dbt - Transform data in your warehouse (getdbt.com)
ELT ツールCData Sync の変換機能を、dbt Cloud で拡張
さて、dbt Cloud はデータパイプライン(ELT)におけるT(変換)の部分を担うツールです。そのため、SaaS やオンプレミスのデータを取ってきて(ELT のE(抽出))DB に入れる(ELT のL(ロード))、といったことはできません。CData Sync はCData の提供するELT 製品で、dbt Cloud でできない抽出やロードの処理を実行できます。400種類を超えるデータソースに対応しているので、データをお好みのDB やDWH に転送してdbt Cloud で統合できます。
CData Sync はネイティブでもSQL を使ったデータの変換に対応していますが、この部分にdbt Cloud を利用することでデータパイプラインの管理やCI/CD を強化したり、より柔軟なデータ変換を実現できます。
それでは、パイプラインを作っていきましょう!
CData Sync -> Salesforce への接続設定
まずは、CData Sync からSalesforce への接続を設定します。CData Sync のインストールが済んでいない場合は、こちらのリンク からフォームを送信して、30日間の無償トライアルをダウンロードいただけます。
インストールして製品が起動すると以下のような画面が表示されます。新しく接続先を設定するには、「接続」のページに移動しましょう。
「接続を追加」ボタンをクリックするとデータソースの一覧が表示されるので、検索ボックスに「salesforce」と入力して、Salesforce コネクタが表示されたら「接続を設定」ボタンをクリックします。
お好みの接続名を入力したら、「Salesforce への接続」をクリックするとSalesforce 側のログイン画面が表示されるので、必要な情報を入力します。Salesforce コネクタは埋め込みOAuth に対応しているので、設定に必要な操作はこれだけです!画面右上の「作成およびテスト」をクリックして接続に成功した旨の表示がされたら完了です。
では、先ほどの「接続」画面に戻って、今度はデータの転送先であるBigQuery 側の接続を設定していきましょう。
CData Sync -> BigQuery への接続設定
さて、接続の画面に戻ったら再度「接続を追加」をクリックして、今度は「同期先」タブをクリックします。
ここで、「bigquery」と入力するとBigQuery 用コネクタが表示されるので、先ほどと同様に「コネクタを設定」ボタンを押して接続設定画面に移動します。「接続名」にはお好みの名前を入力して、BigQuery で使用したいプロジェクトID とデータセットID を入力してください。以下は設定の一例です。
今回はデータ量が少なく、リアルタイムでのデータ追加も必要ないので、Insert Mode をDML に設定しています。各モードの違いについては、こちらのヘルプページを参照してください。
Salesforce データをBigQuery に転送するためのジョブを設定
次に、Salesforce のデータをBigQuery に転送するための設定をしていきます。
ジョブを追加するには、メニューから「ジョブ」を選択してジョブ画面に移動して、「ジョブを作成」をクリックします。
以下のような画面が表示されるので、「データソース」と「同期先」に先ほど作成したSalesforce とBigQuery の接続を指定して、「ジョブを作成」をクリックします。データソースの全テーブルを同期したい場合は、「すべて同期」ボックスにチェックを入れてください。
作成したタスクを選択して、「タスク」タブに移動します。ここで、データソースのどのテーブルを同期するか選択することができます。今回は、Opportunity(商談)とUser(ユーザー)のデータを結合したビューを作るので、この二つのテーブルを選択しました。必要に応じて同期したいテーブルを選択してください。
設定が完了したら、タスクを実行してみましょう!右上の「実行」ボタンから実行できます。ステータスが「Successful」となっていたら実行は成功です。
実際に、BigQuery にAccount とOpportunity のデータが転送されていました!
さて、データを整形せずにDB / DWH に移すだけであれば、これで準備は完了です。今回は、ここにdbt Cloud を使ったデータ変換のステップを入れていきます。
dbt Cloud との連携を設定
基本的な設定からはじめましょう。以下の説明では、dbt Cloud のアカウントは取得していて、dbt Cloud 上でのモデルやジョブの作成は実行できる前提で話を進めます。dbt Cloud のアカウントが未作成の場合は、以下のページから14日間のトライアル付きのアカウントを作成できます。
Signup (getdbt.com)
注意:dbt Cloud の無償版であるDeveloper プランをご利用の場合、API アクセスが利用できないため以下のステップは実行できません。CData Sync との連携を利用したい場合は、Team 以上のプランをご利用ください。dbt Cloud の無償トライアルではTeam プランが利用できるので、問題なく連携を利用できます。
また、今回は以下のSQL をモデルとして使います。先ほどSalesforce からBigQuery に転送したOpportunity(商談)とAccount のデータを結合して、各商談に紐づいたアカウントの名前とその商談のステージ、最後のアクティビティがあった日付を閲覧できるようにするビューを作っています。
SELECT Opportunity.Name as OppName, Account.Name as AccName, Opportunity.StageName, Opportunity.LastActivityDate as OppLastActivity
FROM `cdata_test_sf.Account` AS Account
JOIN `cdata_test_sf.Opportunity` AS Opportunity
ON Account.Id = Opportunity.AccountId
CData Sync はdbt Cloud のジョブ単位で変換を実行するので、以下のようにモデルを実行するためのジョブを作成しておきます。
dbt Cloud の認証情報を取得
それでは、CData Sync との連携に必要となるdbt Cloud のAPI キーとアカウントID を取得しましょう。
dbt Cloud にログインしたら、右上の歯車アイコンから「Profile Settings」を選択します。こちらのページの最下部にAPI キーがあるので、こちらをコピーして控えておきます。
次に、同じ歯車アイコンから「Account Settings」に移動します。こちらのページのURLの最後の数字部分(以下の例では123456)がアカウントID となりますので、こちらも控えておいてください。
例:https://cloud.getdbt.com/settings/accounts/123456
API キーとアカウントID が用意できたら、dbt Cloud に接続するための設定をしていきます。CData Sync の「設定」画面に移動して「高度な設定」タブを表示します。「dbt cloud 設定」セクションの右端にあるアイコンをクリックすると、設定用画面が出てきます。
こちらの画面に先ほど取得したアカウントID とAPI キーを入力して、「接続テスト」をクリックします。テストに成功した旨表示されたら、保存をクリックします。
dbt Cloud を使った変換用のジョブを作成
次に、CData Sync からdbt Cloud をデータの変換に使用するための設定をしていきます。メニューから「変換」ページに移動して、「変換を追加」ボタンをクリックします。
以下の画面が表示されるので、お好みの名前を指定して、種類として「dbt Cloud」を選択します(CData Sync のSQL 変換を使う場合は「SQL」を使います)。「dbt ジョブ」にdbt Cloud 内で作成したジョブを指定して、「変換を追加」をクリックします。
これで、dbt Cloud のジョブを実行するための変換タスクが作成できました。この時点で、右上の「実行」ボタンをクリックすることで手動で変換タスクを実行することもできます。今回は、CData Sync のジョブが実行された後にdbt Cloud のジョブを実行するというパイプラインを作るため、「トリガー」を設定してみます。
右側の「トリガー」パネルの設定ボタンをクリックすると、以下の画面が表示されます。ここで、タスクが実行されるトリガーを設定できます。CData Sync のジョブ実行に連動させるには、「ジョブ後」を選択して、CData Sync のジョブが実行された後に実行したいdbt Cloud のジョブを指定します。
これでCData Sync でdbt Cloud を組み込んだELT パイプラインを構築できました!
dbt Cloud でデータを変換してLooker Studio で可視化
それでは、先ほどと同様に「ジョブ」画面から作成したジョブを実行してみます。この手順は先ほどジョブを実行したときとまったく同じです。
しかし今回はdbt Cloud 側のジョブを実行するトリガーを設定したので、CData Sync で作成したジョブを実行すると、
dbt Cloud 側でジョブが実行されました。
そして、BigQuery 側でも商談とオーナーを結合したビューが作成できています。
BigQuery に移せば、Looker Studio での可視化もすぐに可能です。これで、Salesforce -> BigQuery -> Looker Studio までのデータパイプラインが構築できました。
おわりに
ということで、CData Sync の新機能、dbt Cloud 連携をご紹介しました。CData Sync は30日間無償トライアルが利用できるので、この機会にぜひCData Sync のパワフルなELT 機能を体験してみてください!
関連コンテンツ