SnowflakeからBrazeにユーザーデータを自動連携で取り込む #Cloud Data Ingestion

BrazeのCloud Data Ingestion for Snowflakeをやってみたっぜ!
2023.03.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Brazeブロガーの國崎です。
BrazeにはCloud Data IngestionというクラウドのデータウェアハウスからBrazeにデータを自動連携するという大変便利な機能があります。

今回はこちらの機能を実際に試してみたので、その手順などを紹介します。

前提条件

今回の作業は以下を前提とした条件での紹介となります。

  • SnowflakeのACCOUNTADMINの権限を持っている
  • Snowflakeに入れるデータはローカルデータ

ネットワークポリシーでの設定なども必要な場合はACCOUNTADMINが必要になります。
SYSADMINだと権限の設定に詰まることが多かったので、当方はACCOUNTADMINで終始やりました。

Snowflakeの設定手順

データベース、スキーマ、テーブルを作成

まずはSnowflakeのワークシートでBrazeに取り込む用のデータベース、スキーマ、テーブルを作成します。
テーブルに入れるカラム名は以下で決まっているので、他の名前に変更することはできません。

CREATE DATABASE KUNISAKI_TEST; //データベースの名前
CREATE SCHEMA KUNISAKI_TEST.PUBLIC; //スキーマの名前
CREATE OR REPLACE TABLE KUNISAKI_TEST.PUBLIC.CUSTOM_ATTRIBUTES_SYNC (
     UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
     EXTERNAL_ID VARCHAR(16777216) NOT NULL,
     PAYLOAD VARCHAR(16777216) NOT NULL
); //テーブルの名前

以下テーブルに入るカラム名の補足です。

  • UPDATED_AT…テーブルの更新、追加時刻。
  • EXTERNAL_ID…ユーザーの一意のID。
  • PAYLOAD…ユーザーデータをJSON文字列で書く。

データベース&スキーマ&テーブルのロールを設定

ロールを作成し、上記で作成したデータベース、スキーマ、テーブルにロールを割り当てます。

CREATE ROLE BRAZE_INGESTION_ROLE;

GRANT USAGE ON DATABASE KUNISAKI_TEST TO ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON SCHEMA KUNISAKI_TEST.PUBLIC TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON TABLE KUNISAKI_TEST.PUBLIC.CUSTOM_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;

ウェアハウス&ユーザーの作成とロールを設定

ウェアハウスとユーザーも作成して、同じくロールを割り当てます。

CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE;
GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE;

use role ACCOUNTADMIN;
CREATE USER KUNISAKI_MASAO;
GRANT ROLE BRAZE_INGESTION_ROLE TO USER KUNISAKI_MASAO;

アカウント>ポリシーでBraze IPを許可

Snowflakeの設定環境によってはBraze IPの許可をする必要があります。
この作業はACCOUNTADMINが必要になります。
brazesnowflake1

以下はBraze IPです。

インスタンスについてUS-01、US-02、US-03、US-04、US-05、US-06 インスタンスについてEU-01とEU-02
23.21.118.191 52.58.142.242
34.206.23.173 52.29.193.121
50.16.249.9 35.158.29.228
52.4.160.214 18.157.135.97
54.87.8.34 3.123.166.46
54.156.35.251 3.64.27.36
52.54.89.238 3.65.88.25
18.205.178.15 3.68.144.188
- 3.70.107.88

Brazeの設定手順

テクノロジーパートナー>Snowflakeで設定

Brazeダッシュボードの左メニューにあるテクノロジー>Snowflakeで、新しいインポート同期を作成します。
brazesnowflake2

Snowflakeで設定した以下の項目を入力します。
brazesnowflake2_2

Snowflake Account Locatorは以下のSnowflakeドキュメントから自身の設定環境で合うものを選択します。

Snowflake documentation

遷移した先で同期するデータタイプが選択できます。
データタイプは「User Attributes」「Custom Events」「Purchase Events」から選択することが可能です。

今回の連携では「User Attributes」を選択します。 brazesnow3

データ連携の頻度もここで設定します。
一番短い間隔で15分間隔ができます。
brazesnow4

その他設定に問題なければテスト接続をクリックします。
RSA公開キーが発行されるのでそれをコピーして…。
brazesnow5

こちらをSnowflakeのワークシートに貼り付けて実行します。
ステートメントは正常に実行されました。が表示されればOKです。
brazesnow6

Brazeの画面に戻ってテスト接続をクリック。
The connection was successful but there was no data in the table.が出たら接続は成功です。
brazesnow7

SnowflakeにCSVをロードしてBrazeに連携する

実際にSnowflakeに入ったデータがBrazeに連携されるか試してみます。
入れるデータはCSVで以下のデータです。

UPDATED_AT EXTERNAL_ID PAYLOAD
2023-03-06 17:05:46 kunisaki_snowflake {“好きな食べ物”:”豚骨ラーメン”,“来店回数”:"99"}

SnowflakeのデータベースからCSVをロードします。
brazesnow8

Brazeの画面でSyncが完了したのを確認します。
カウントの分母と分子が揃ったら完了です。
brazesnow9

ユーザー検索で取り込んだEXTERNAL_IDの「kunisaki_snowflake」を検索してみます。
brazesnow10

カスタム属性も反映されてます。
brazesnow11

ってな感じでSnowflakeからのBraze連携が無事できました!!

まとめ

ご覧のようにSnowflakeからのBraze連携は簡単に出来ることができました!
リアルタイムでの連携は現時点では難しいですが、最短15分間隔でできるのでそのあたりの感覚でも許容できる連携には大いに使えると思います。

連携作業においてはSnowflakeのスキルもある程度あると取り組みやすいのかな、と感じました。
本機能の詳細については以下の公式ドキュメントでも案内がされています。

クラウドデータインテグレーションSnowflake

本記事の作成にはスペシャルアドバイザー:matsuoka氏にご協力いただきました。

今回はSnowflakeでしたが、BigQueryからBrazeの連携についても以下記事で紹介してます。

BigQueryからBrazeにユーザーデータを自動連携で取り込む #Cloud Data Ingestion