逆転の発想!DWHのデータをクラウドサービスに連携するツール「Census」を使ってみた
大阪オフィスの玉井です。
前から気になっていたリバースETLツールである「Census」を使ってみました。
「リバースETL」とは
概要
ざっくりいうと、DWHに存在するデータを各種アプリケーション等に連携する(書き戻す)ことを指します。
ETL(ELT)が、色々なデータを集めてDWHに集約(ロード)することを指すのであれば、リバースETLはその逆を行うので、まさに「リバース」というわけです。
ユースケース
リバースETLを行うと、どういうメリットがあるのでしょうか。
データ分析基盤が整ってくると、非常に価値のあるデータがDWHに蓄積されてきます。これらをBIツールで可視化したり、機械学習に用いたりすることも勿論素晴らしいのですが、場合によっては、DWHに溜まっている分析データを、別のアプリケーションに直接連携したい時があります。
例えば、SalesforceのデータをDWHにロードし、色々なデータ分析を行い、有用な顧客データが出せたとします。そのデータをBIツールで可視化したり、csvでダウンロードしたりしてもよいのですが、もう一歩すすんで、Zendeskのユーザーデータに直接入れることで、Zendesk上で分析後の顧客データを参照することができるようになります(Zendeskで質問をしてきたユーザーのSalesforceデータがわかる)。
データ分析で把握したインサイトは、アクションに繋げなければ意味がありません。そのアクションを起こすためには、分析結果(のデータ)を、普段メンバーが使用しているツールやサービスに、直接書き戻すのが一番近道だったりします。
リバースETLを行うサービス
リバースETL自体は、手法のことを指すので、ユーザーが独自に実装することが可能です。何らかのアプリケーションやサービスのデータを入れるということは、そのアプリケーション等のAPIを使用して、独自のシステムやコードを開発する必要がありますが、これが結構大変です。特に、アプリケーション等のAPIは、仕様等が運営側の都合でコロコロ変わるので、それに追随する運用保守だけでも、コストがかなりかかります。
ですので、最近は、このリバースETLを自動で行ってくれるサービスがいくつか登場してきました。Fivetranを「データをDWHに自動連携してくれるサービス」と呼ぶのなら、リバースETLはFivetranの逆を行うサービスといえるでしょう。
Censusとは
DWHのデータを各種サービスに連携する…まさにリバースETLを行ってくれるSaaSです。特にコードを書かなくても、すぐに連携ジョブを設定することができます。
どうでもいいのですが、普通にcensusで検索すると、「国勢調査」の方が出てくるので、ググラビリティとしてはちょっとアレですね。
やってみた
概要
SalesforceのデータをBigQueryに入れて顧客分析を行い、その結果をZendeskの「組織データ」に連携します。
全体図は下記の通りです。
下準備
Fivetranを使用して、BigQueryにSalesforceのデータを連携しておきます。
SalesforceのデータをBQに作成しました。
トライアルアカウントを開始する
Censusのウェブサイトで、「Start a free trial」を選びます。
もういきなりサインアップ画面が出てくるので、画面に従ってサインアップします。
これだけで、Censusのトライアル環境が使えるようになりました。ちなみに、トライアル期間は2週間です。この間は、機能をフルに試すことができます。
CensusにDWHを接続する
ご丁寧にも、トライアル開始時に画面が、そのまま最初の設定ウィザードみたいになっているので、それに従っていきます。
まず、連携元となるデータ…つまりDWHを設定します。今回はGoogle BigQueryを選びます。
連携したいBQのプロジェクトIDを入れます。
次に、Census用のサービスアカウントを、GCPに設定する必要があります。これまたご丁寧にも、gcloud
を使ったコマンドを用意してくれているので、これをCloud Shellとかでそのまま実行します。
問題なければ、Census→BQへの接続が完了します。
CensusにZendeskを接続する
今度は、連携先となるアプリケーションを設定します。今回はZendeskになります。
初期設定ウィザードではなく、横のメニューから追加してみます(初期設定ウィザードでは、お試しで、違うアプリケーションを設定してしまったので、横のメニューからやってみました)。Service Connections→Add Service→Zendeskを選びます。
Zendeskのドメインを入れます。https://
は不要でした。
入力後、Zendeskの画面に遷移するので、Censusを許可してあげれば、それでもう接続完了です。
Syncsを作成する
連携元(BQ)と連携先(Zendesk)が設定できたので、ついにこの2つを連携させるジョブ(Sync)を作成してきます。横のメニューからSyncs画面に移動し、Add Syncを行います。
連携元のデータを選ぶ
接続しているDWHはBQなので、データセットとテーブルを選ぶ形になります。今回は「分析した顧客データをZendeskに連携する」ことが要件なので、顧客データが入ったテーブルを選びます(Fivetranが作成してくれたaccountテーブルに、取引先責任者の名前だけ引っ張ってきたビューを使います)。
連携先アプリケーションの「どこに」データを連携するか選ぶ
(繰り返しになりますが)今回は「分析した顧客データをZendeskに連携する」ことが要件なので、顧客に相当する「組織(Organization)」を選びます。
連携の種類を選ぶ
このデータの組み合わせの場合は「Update or Create」しか選べないようです。これは、キーが既に存在するデータについては更新を、キーが存在しないデータについては作成を、それぞれ行うようになります。Syncの種類によっては、「Update Only」等が選べる場合もあります(キーが存在しないデータについては何も行わない)。
キーを選ぶ
連携する際のキーとなるデータを選びます。SQLでJOINするときの結合キーを指定する感じです。今回は顧客名(組織名)を選びます。
各フィールドのマッチングを設定する
最初に選んだBQのテーブルの各カラムを、Zendeskの組織データの何のフィールドに入れるか、というのを設定していきます。今回は下記のようにしました。Name
以外は、Zendesk側で個別に作成したユーザーフィールドになります。
最終確認→連携開始
設定した内容を確認し、問題が無ければ連携を開始します。
連携が正常に完了すれば、Syncの詳細画面で、下記のように確認することができます。
連携後の確認
BQ側のデータは下記のとおりです。これがZendeskに連携できているかを確認します。
まず、組織の一覧を確認します。今回のZendeskはサンドボックス環境なので、ほとんどが「Create」扱い…つまり、Salesforceの顧客データがそのままZendeskの組織としてドドドッと作成されていることになります。
できてますね!
次に、各フィールドのデータについて確認します。
できてますね〜。顧客情報がZendesk上でわかると便利ですね。
DWHのデータをアプリケーションに「戻す」時代へ
冒頭で述べたように、データ分析基盤の活用が進んでくると、自ずと、色々な知見がつまったデータがどんどんDWHに溜まってきます。それを活用する方法として、BIツールや機械学習等が挙げられますが、今後は、もう「直接別のアプリケーションに書き戻す」という方法も、注目されていくと思います。
色々なデータを統合→統合したデータを分析→分析したデータをアプリに戻す→アプリからデータを統合→…という風に、データ分析の輪廻が、これから誕生していく気がします。
下記のイメージが、個人的に、すごくしっくりきたので紹介します。
※We Raised $16m From Sequoia to Complete the Modern Data Stackより
おわりに
Censusは、私の大好きなdbtと連携できるらしいので、今後も触っていきたいですね。