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

BrazeのCloud Data Ingestion for BigQueryをやってみたっぜ!
2023.08.15

Brazeブロガーの國崎です。
今回はBrazeのCloud Data Ingestionを使ってBigQueryにあるデータをBrazeに流し込むということをやってみましたので、その手順をご紹介します。

前提条件

  • Google Cloudのプロジェクト設定は完了している
  • BrazeのCloud Data Ingestion for BigQueryが使える状態である

この記事を執筆している2023年8月時点でCloud Data Ingestion for BigQueryはEARLY ACCESSとなっています。
機能として使えない方はBrazeアカウントマネージャーまたはCSMにお問い合わせください。

BigQueryでの作業

まず始めにBigQueryでやる作業についてお伝えします。

テーブルを設定する

以下のテーブルをBigQueryで用意します。

フィールド名 タイプ モード
UPDATED_AT TIMESTAMP 必須
JSON PAYLOAD 必須
EXTERNAL_ID string NULLABLE
ALIAS_NAME string NULLABLE
ALIAS_LABEL string NULLABLE
BRAZE_ID string NULLABLE

カラム名は上の定義と合わせる必要があります。
またユーザーを識別させるために「EXTERNAL_ID」「ALIAS_NAME&ALIAS_LABEL」「BRAZE_ID」いずれかのカラムが必要になります。

今回のテストでは以下のテーブルを用意しました。

UPDATED_AT PAYLOAD external_id
2023-08-15 00:00:00 UTC {"お気に入りフード":"ラーメン","来店回数":30} test_bq_kunisaki

SQLでテーブルを用意したのですが、注意点としてはPAYLOADのタイプをJSON型で用意する必要があります。
BigQueryでJSON型がリリースされたのが最近なので、SQLで作成する際はそれ用の記述を書く必要があります。

SQL文は以下のように書きました。

// テーブルの作成
CREATE TABLE データセット ID.テーブル名 (
    UPDATED_AT TIMESTAMP,
    PAYLOAD JSON,
    external_id STRING
);

// データの挿入
INSERT INTO データセット ID.テーブル名 (UPDATED_AT, PAYLOAD, external_id)
VALUES (TIMESTAMP "2023-08-15T00:00:00.000",JSON '{"お気に入りフード": "ラーメン", "来店回数": 30}', "test_bq_kunisaki");

以下記事が参考になったので、ここでも共有。

【新機能】BigQueryでJSON型が使えます!(BigQuery subscriptionsも対応)

ちなみにCSV形式のデータを入れ込むとPAYLOADの部分はStringになったので、事前にスキーマをJSON型にする必要がありそうです。

サービスアカウントの作成と4つの権限付与

IAMと管理>サービスアカウントからサービスアカウントの作成をします。
20230815_01

サービスアカウントの作成の際に以下4つのロールを付与します。

  • BigQuery Connection User
  • BigQuery User
  • BigQuery Data Viewer
  • BigQuery Job User

アカウント作成をした後はアカウント画面のタブにあるキーからJSONキーの新規作成をします。
20230815_02

このJSONキーは後ほど使いますので、大切に保管しましょう。

BrazeのIPへのアクセスを許可する

ネットワークポリシーを設定している場合は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での作業

ダッシュボードにログイン後、左メニューのパートナー連携>テクノロジーパートナーをクリック。
20230815_03

検索窓に「big」と入れたらBigQueryが出てくるので、さらにクリック。
20230815_04

新しいインポート同期を作成をクリック。
20230815_05

認証情報は任意の名前を入れて、ファイルドロップ部分にはサービスアカウントで作成したJSONファイル、プロジェクト/データセット/テーブルには今回連携させるBigQueryの各項目を入力します。
先ほどGoogle Cloudの作成したJSONファイルを使う場面です。
20230815_06

データ連携するデータタイプの設定、連携の頻度などの同期設定を行います。
今回連携するのはユーザー情報なので、「ユーザーの属性」を選択。
20230815_07

連携の頻度は1番短い間隔で15分に1回になります。

テスト接続で問題ないことを確認します。
20230815_08

今回ここで「接続に成功しましたが、テーブルにデータがありませんでした。」となってますが、テスト接続の際はテーブルの中身を空にして行いました。
テーブルの中身がある状態だと、どうやってもPAYLOADをstring判定されて連携がうまくいかなかったためです。

そのため、テーブルの中身を空にしてテスト接続を行い、その後同期をすると問題なくいけました。
同期が問題なく行われると、状態が「Active」で同期したレコードのカウントが表示されます。
20230815_09

Brazeのユーザー画面で確認

BigQueryにあったレコードのユーザー情報がBrazeに取り込まれているか確認してみます。
20230815_10

無事取り込みが完了してました!

今回参考にしたドキュメント

最後に今回参考にした公式ドキュメントをお伝えします。

Brazeの公式ドキュメント

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

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