Snowflakeからmixpanelに直接連携!Warehouse Eventsを使ってみる

Snowflakeのデータをmixpanelに連携してみました!
2023.08.04

ミックスパネラーの國崎です。
今回はSnowflakeにあるデータをmixpanelに直接投入することができる機能Warehouse Eventsを使ってみたので、その所感をお伝えします。

本記事でわかること

  • Snowflake→mixpanelの連携をWarehouse Eventsを使ってやる方法

「Warehouse Eventsとは?」について知りたい方は以下記事をご覧ください。

mixpanelにデータウェアハウスを直接つなぐWarehouse Events機能の紹介

Snowflakeでmixpanel連携用のテーブルを用意する

Snowflakeからmixpanelの連携にあたり以下のカラムは必須になってきます。

  • Event Name
  • Event Time
  • Distinct ID
  • Insert Time
  • Insert ID

今回は以下のテーブルをサンプルで用意しました。

Event_Name Event_Time Distinct_ID Insert_Time Insert_ID
来店した 2023-08-01 10:00:00 7073d103-1d84-5483-903e-f9ba5d0746f9 2023-08-01 12:00:00 7073d103-1d84-5483-903e-f9ba5d0746f9-1680318111
本を読んだ 2023-08-01 11:00:00 3896ab1e-1326-5403-ac33-8984cdf9baf4 2023-08-01 13:00:00 3896ab1e-1326-5403-ac33-8984cdf9baf4-1680318111
ご飯を食べた 2023-08-01 12:00:00 52336ef6-dd78-582a-8185-a099e0bcf269 2023-08-01 14:00:00 52336ef6-dd78-582a-8185-a099e0bcf269-1680318111

注意点としてはEvent Timeはイベントが発生した時間で、Insert Timeはレコードに追加された時間になります。
同じ時間でも定義が違うことに注意しましょう。

mixpanelとSnowflakeで実際にやってみる

mixpanelでは「Warehouse Sources」で連携するデータウェアハウスの設定を行い、「Warehouse Data」で連携するデータの設定を行います。

今回検証を進める中で気づきましたが、mixpanelで生成されたコードをSnowflakeに流しながら設定を進める感じになります。
そのため設定をされる際は両方の画面を2画面とかにしながら進めるとやりやすいかなと思いました。

Warehouse Sourcesでデータウェアハウスを設定

1.mixpanel>Project Settings>Warehouse SourcesでSnowflakeをクリック。
mixpanel-snowflake1

2.Snowflakeのアカウント名を入力
mixpanel-snowflake2

アカウント名は以下をSnowflakeのワークスペースに流し込んだらわかります。

SELECT REGEXP_REPLACE(wl.value:host::varchar, '\.snowflakecomputing\.com$', '')
  FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$ALLOWLIST()))) AS wl
  WHERE wl.value:type::varchar = 'SNOWFLAKE_DEPLOYMENT_REGIONLESS';

3.「Username」「Role」を入力。KeyPairを選択したら書き出されたコードをSnowflakeのクエリで実行します。
mixpanel-snowflake3
Snowflakeで問題なく実行されたNextへ。

4.Storage IntegrationでGoogle Cloud Storageのバケットに書き出すコードが払い出されるので、それをSnowflakeのクエリで実行します。
mixpanel-snowflake4

5.オプションでSnowflakeのデータベースを指定したい場合は設定する事もできます。
mixpanel-snowflake5

データベース名を設定後、以下のコードをSnowflakeのクエリで実行します。

GRANT USAGE ON DATABASE "指定しだデータベース" TO ROLE 作成したROLE;
GRANT USAGE ON ALL SCHEMAS IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE;
GRANT SELECT ON ALL TABLES IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE;
GRANT SELECT ON ALL VIEWS IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE;

6.mixpanelのデータソースができました。
mixpanel-snowflake6

Warehouse Dataで連携するデータの設定

Project Settings > Warehouse Data でAdd Warehouse Eventをクリック。
mixpanel-snowflake7

表示された画面左側で読み込むSnowflakeのSource・Dataset・Tableを選択し、必須カラムのEvent Name・Event Time・Distinct ID・Insert Time・Insert IDがそれぞれどのカラムにあたるかを指定します。
mixpanel-snowflake8

Create EventをクリックしたらStatusがActiveになっていることを確認します。
mixpanel-snowflake9

レポート画面で確認してみると、Snowflakeで入れたイベントが反映されているのが確認できました!
mixpanel-snowflake10

連携における注意点

今回検証をして気づきましたが、Event_Timeを2023/4/1にしていて、それ以降計測がないイベントデータは反映がされていませんでした。
なぜこれが反映されないのか、調査したところmixpanelのドキュメントに「Mixpanel のレポート ドロップダウン メニューでは、過去 30 日以内に発生しなかったイベントが非表示になります。」と記載がありましたので参考にしてください。

mixpanelのドキュメント

以上、Snowflakeのデータをmixpanelに連携する検証記事でした。
今回の検証とは逆のパターンになるmixpanelのデータをSnowflakeに書き出す検証記事は以下をご覧ください。

MixpanelからSnowflakeにパイプラインを使ってデータを送信する

mixpanelのお問い合わせはクラスメソッドまで!

クラスメソッドではmixpanelの導入支援、伴走支援を手厚く行なっております。

mixpanelがどんなもんか知りたい!使い方を教えて欲しい!もっと活用方法を知りたい!
と言う方はぜひぜひクラスメソッドまでお問い合わせください!!

クラスメソッドへのmixpanelお問い合わせ