こんにちは!Chinenです。
Snowflake⇒trocco⇒Hubspotの繋ぎこみに成功したので、ご紹介します!
1.ゴール
最近PODBの最新情報を確実にユーザーの皆さんお届けするためにメーリングリストを開設したのですが、Snowflakeからユーザー情報を抽出しHubspot(メーリングリスト運用に使用しているCRMツール)に顧客情報登録をする作業を毎回手動で行う手間をtroccoを活用することによって省けないかと考えました。
※従来のステップでは、Snowflakeから最新の顧客情報をcsv.で抽出し、HubspotのUIでcsv.をロードし取り込んでいました。
2.設定方法
1.Snowflakeの顧客情報を含むデフォルトビューをタスクで定期的に別ビューへ抽出する
まず使用するのは、SnowflakeのSnowflakeDBに用意されている、DATA_SHARING_USAGEというスキーマのLISTING_EVENTS_DAILYというビューです。
このビューでは、いつ・どこのリージョンの・何というアカウントロケーターを使用する・何というメールアドレスを保有するユーザーが・何のリスティングを取得したかなど、日々のMarketplaceでの取引(?)の詳細を確認することができます。
※SnowflakeDBの詳細についてはこちらのブログでも紹介しています。
PODBでは、このビューのメールアドレスをユニークに抽出し、メーリングリスト送信前にHubspotのコンタクト情報を更新しています。
ここから一気にtrocco設定へ!…と行けば良いのですが、SnowflakeとHubspotの情報を結び付けるためのプライマリキー的なものを設定する際にカラム名を揃える必要があり、SnowflakeもHubspotもデフォルトで用意されていたカラムを使用する関係上、カラム名を直接変更することはできず、まずはSnowflake上でHubspotに合わせたカラム名を別名で付けた別のビューを用意する必要があります。
また、別のビューを作成した後は、定期的に最新のユーザー情報をデフォルトビューから流す必要があります。今回はSnowflakeのタスク設定で毎朝9時に最新のユーザー情報をこの別のビュー(「PODB_CONSUMER_UPDATE」と呼ぶことにします。)に流すことにしました。
設定したSQLは以下の通りです。(Hubspot上でPODBの顧客とその他の顧客を区別する必要があるため、新たに「event_contact_type」というカラムが追加されています。)
CREATE OR REPLACE TASK PODB_CONSUMER.CONSUMER_INFORMATION.PODB_CONSUMER_UPDATE
WAREHOUSE = TROCCO
SCHEDULE = 'USING CRON 00 09 * * * JAPAN'
AS
CREATE OR REPLACE SECURE VIEW PODB_CONSUMER.CONSUMER_INFORMATION.PODB_CONSUMER_UPDATE
AS
SELECT DISTINCT
CONSUMER_EMAIL AS EMAIL,
'PODB' AS EVENT_CONTACT_TYPE
FROM
SNOWFLAKE.DATA_SHARING_USAGE.LISTING_EVENTS_DAILY
WHERE
CONSUMER_EMAIL IS NOT NULL;
これでSnowflakeでの下準備は完了です!
2.troccoでSnowflakeとHubspotの繋ぎ込みをする
いよいよtroccoで設定をします。
(1)接続情報を新規作成
まずはSnowflakeとHubspotの接続情報を各々設定します。ここはそんなに難しくないですし以下のドキュメントを参照すればすぐにできるかと思います。
Snowflakeの接続情報 – 接続情報 (trocco.io)
HubSpotの接続情報 – 接続情報 (trocco.io)
(2)転送設定を新規作成
では、先に作成したSnowflakeとHubspotの接続情報を繋げます。
まず、転送元と転送先を設定します。転送元・転送先を指定する (trocco.io)
「この内容で作成」ボタンを押して次へ進みます。
次に、転送元と転送先の設定を行います。STEP1 転送元・転送先の設定を行う (trocco.io)
先ほど作成したSnowflakeの接続情報を選択し、
ウェアハウス名やデータベース名を選択していきます。
次に、どのテーブルやビューのどういったカラムが欲しいのかをSQLで設定します。
Snowflakeの設定が終わったらHubspotの設定をします。
転送モードは今回は「UPSERT」を選びます。更新のあった連絡先か新規に追加された連絡先のみがHubspot上で更新・新規コンタクト作成されます。
次の画面へ遷移して、カラム定義を設定します。STEP2 データプレビュー・詳細設定を行う (trocco.io)
この際、Snowflakeで元カラムが大文字になっていますが、別名を編集して小文字に変換しないとエラーが出ます。
後は設定を保存して、実行してみて、エラーが起きずにHubspotに最新情報が更新されていれば成功です!
今回は毎朝9時半にこの設定が実行されるようスケジュールも組みました。
3.留意点
(1)Hubspotのカラム名はInternal_nameを使用する
Hubspotは見た目上のカラム名と実際のカラム名が違うことが多々あります。カラムのプロパティを確認して、Internal nameをtrocco上で設定するようにしてください。
(2)Hubspotのカラム名はtroccoでは全て小文字にする
Internal nameは全て英語の小文字です。trocco上でも、元のカラムに大文字が含まれていても、必ず別名で小文字に変換してください。
(3)Hubspotでデフォルトで作成されているカラムのルールは変更不可の場合がある
以下のドキュメントでは、UPSERTキーを指定するまでもなくHubspotのプロパティ設定で重複にならない値を設定するよう指定することも紹介されていますが、試してみたところデフォルトで設定されているカラムの場合ここの設定は変更できないようです。
転送先 – HubSpot – 転送設定 – 転送先コネクタ (trocco.io)
4.troccoのサポートがとても良い件
偉そうに留意点をお伝えしましたが、ここを解消するのに試行錯誤し相当な時間がかかりました。
思い切ってtroccoのサポートの方にヘルプを求めてご提示いただいた解決策が上記でした。
日本語、日本時間、迅速に対応いただけるので、かなりおすすめです!
5.おわりに
じゃ、最後に宣伝です。
Prepper Open Data Bank(PODB)では、日本の様々なオープンデータを加工しています。
データ分析者の皆さまのデータプレップに割く時間を大幅に削減することで、
本質的なデータ分析のお時間に時間と労力を割いていただくことができます。
ぜひご活用ください!
Prepper Open Data Bank 収集も加工も不要!すぐに使えるオープンデータ! (truestar.co.jp)
ではまた次回!