逆転の発想!DWHのデータをクラウドサービスに連携するツール「Census」を使ってみた

データ分析の輪廻転生
2021.03.04

大阪オフィスの玉井です。

前から気になっていたリバース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の逆を行うサービスといえるでしょう。

Reverse ETL — A Primer. Data infrastructure has gone through an… | by Astasia Myers | Memory Leak | Feb, 2021 | Mediumより

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と連携できるらしいので、今後も触っていきたいですね。