カタログデータの同期と削除
このページでは、カタログデータの同期方法について説明します。
ステップ 1: 新規カタログの作成
カタログ用の新しいクラウドデータ取り込み (CDI) 連携を作成する前に、新規カタログを作成するか、連携に使用する既存のカタログを指定する必要があります。新規カタログを作成する方法はいくつかあり、いずれも CDI 連携に使用できます。
- CSV をアップロードする
- Braze ダッシュボードまたは CDI セットアップ中にカタログを作成する
- カタログ作成エンドポイントを使用してカタログを作成する
カタログスキーマへの変更(例えば、新しいフィールドの追加やフィールドタイプの変更)は、更新されたデータが CDI を通じて同期される前に、カタログダッシュボードで行う必要があります。データウェアハウスのデータと Braze のスキーマとの競合を避けるために、同期が一時停止されているとき、または実行がスケジュールされていないときにこれらの更新を行うことをお勧めします。
ステップ 2: クラウドデータ取り込みとカタログデータの連携
カタログ同期の設定は、ユーザーデータ CDI 連携のプロセスとほぼ同じです。
- Snowflake でソーステーブルを設定します。次の例の名前を使用することも、独自のデータベース、スキーマ、およびテーブルの名前を選択することもできます。テーブルの代わりに、ビューまたはマテリアライズドビューを使用することもできます。
1 2 3 4 5 6 7 8 9 10 11
CREATE DATABASE BRAZE_CLOUD_PRODUCTION; CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION; CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC ( UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(), --ID of the catalog item to be created or updated ID VARCHAR(16777216) NOT NULL, --Catalog fields and values that should be added or updated PAYLOAD VARCHAR(16777216) NOT NULL, --The catalog item associated with this ID should be deleted DELETED BOOLEAN );
- ロール、ウェアハウス、ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報をすでに持っている場合はそれらを再利用できますが、必ずカタログソーステーブルへのアクセスを拡張してください。
1 2 3 4 5 6 7 8 9 10 11
CREATE ROLE BRAZE_INGESTION_ROLE; GRANT USAGE ON DATABASE BRAZE_CLOUD_PRODUCTION TO ROLE BRAZE_INGESTION_ROLE; GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE; GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC TO ROLE BRAZE_INGESTION_ROLE; CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE; GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE; CREATE USER BRAZE_INGESTION_USER; GRANT ROLE BRAZE_INGESTION_ROLE TO USER BRAZE_INGESTION_USER;
- Snowflake アカウントにネットワークポリシーがある場合は、CDI サービスが接続できるように Braze の IP を許可リストに追加してください。IP のリストについては、クラウドデータ取り込みを参照してください。
- Braze ダッシュボードで、テクノロジーパートナー > Snowflake に移動し、新しい同期を作成します。
- 接続の詳細(または既存の認証情報を再利用)とソーステーブルを入力します。
- セットアップフローのステップ 2 に進み、「Catalogs」同期タイプを選択し、連携名とスケジュールを入力します。連携名は、以前に作成したカタログの名前と完全に一致する必要があることに注意してください。
- 同期頻度を選択し、次のステップに進みます。
- ダッシュボードに表示された公開キーを、Brazeが Snowflake に接続するために作成したユーザーに追加します。このステップを完了するには、Snowflake で
SECURITYADMIN以上のアクセス権を持つ担当者が必要です。 - Test Connection を選択して、すべてが期待どおりに動作することを確認します。
- 同期を保存し、同期されたカタログデータをすべてのパーソナライゼーションのユースケースに活用します。
- Redshift でソーステーブルを設定します。次の例の名前を使用することも、独自のデータベース、スキーマ、およびテーブルの名前を選択することもできます。テーブルの代わりに、ビューまたはマテリアライズドビューを使用することもできます。
1 2 3 4 5 6 7 8 9 10 11
CREATE DATABASE BRAZE_CLOUD_PRODUCTION; CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION; CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC ( updated_at timestamptz default sysdate not null, --ID of the catalog item to be created or updated id varchar not null, --Catalog fields and values that should be added or updated payload varchar(max), --The catalog item associated with this ID should be deleted deleted boolean )
-
ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報をすでに持っている場合はそれらを再利用できますが、必ずカタログソーステーブルへのアクセスを拡張してください。
1 2 3
CREATE USER braze_user PASSWORD '{password}'; GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user; GRANT SELECT ON TABLE CATALOGS_SYNC TO braze_user;
- ファイアウォールやその他のネットワークポリシーがある場合は、Braze に Redshift インスタンスへのネットワークアクセスを許可する必要があります。Braze ダッシュボードのリージョンに対応する以下の IP からのアクセスを許可してください。IP のリストについては、クラウドデータ取り込みを参照してください。
- 必要に応じて、ソーステーブルを格納する新しいプロジェクトまたはデータセットを設定します。
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
次のフィールドを持つ、CDI 連携に使用するテーブルを 1 つ以上作成します。
1
2
3
4
5
6
7
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CATALOGS_SYNC`
(
updated_at TIMESTAMP DEFAULT current_timestamp,
id STRING,
payload JSON,
deleted BOOLEAN
);
| フィールド名 | タイプ | モード |
|---|---|---|
| UPDATED_AT | TIMESTAMP | REQUIRED |
| PAYLOAD | JSON | REQUIRED |
| ID | STRING | REQUIRED |
| DELETED | BOOLEAN | OPTIONAL |
- ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報をすでに持っている場合はそれらを再利用できますが、必ずカタログソーステーブルへのアクセスを拡張してください。
サービスアカウントには次の権限が必要です。
- BigQuery Connection User: Brazeに接続を許可します。
- BigQuery User: クエリの実行、データセットメタデータの読み取り、およびテーブルの一覧表示を行うためのアクセスをBrazeに提供します。
- BigQuery Data Viewer: データセットとその内容を表示するためのアクセスをBrazeに提供します。
- BigQuery Job User: ジョブを実行するためのアクセスをBrazeに提供します。
サービスアカウントを作成して権限を付与したら、JSON キーを生成します。詳細については、Keys create and delete を参照してください。後で Braze ダッシュボードにアップロードします。
- ネットワークポリシーを設定している場合は、Braze に BigQuery インスタンスへのネットワークアクセスを許可する必要があります。IP のリストについては、クラウドデータ取り込みを参照してください。
- Databricks でソーステーブルを設定します。以下の例の名前を使用することも、独自のカタログ名、スキーマ名、テーブル名を選択することもできます。テーブルの代わりにビューやマテリアライズドビューを使用することもできます。
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
1
2
3
4
5
6
7
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CATALOGS_SYNC`
(
updated_at TIMESTAMP DEFAULT current_timestamp(),
id STRING,
deleted BOOLEAN,
payload STRING, STRUCT, or MAP
);
| フィールド名 | タイプ | モード |
|---|---|---|
| UPDATED_AT | TIMESTAMP | REQUIRED |
| PAYLOAD | STRING、STRUCT、または MAP | REQUIRED |
| ID | STRING | REQUIRED |
| DELETED | BOOLEAN | NULLABLE |
- Databricks ワークスペースでパーソナルアクセストークンを作成します。
- a. Databricks ユーザー名を選択し、ドロップダウンメニューから User Settings を選択します。
- b. Access tokens タブで、Generate new token を選択します。
- c.「Braze CDI」など、このトークンの識別に役立つコメントを入力します。
- d. Lifetime (days) ボックスを空白のままにして、トークンの有効期間を無期限に変更します。Generate を選択します。
- e. 表示されたトークンをコピーして、Done を選択します。
- f. Braze ダッシュボードの認証情報作成ステップで入力が必要になるまで、トークンを安全な場所に保管してください。
- ネットワークポリシーを設定している場合は、Braze に Databricks インスタンスへのネットワークアクセスを許可する必要があります。IP のリストについては、クラウドデータ取り込みのページを参照してください。
次のフィールドを持つ、CDI 連携に使用するテーブルを 1 つ以上作成します。
1
2
3
4
5
6
7
8
CREATE OR ALTER TABLE [warehouse].[schema].[CDI_table_name]
(
UPDATED_AT DATETIME2(6) NOT NULL,
PAYLOAD VARCHAR NOT NULL,
ID VARCHAR NOT NULL,
DELETED BIT
)
GO
- サービスプリンシパルを設定し、適切な権限を付与します。既存の同期の認証情報をすでに持っている場合はそれらを再利用できますが、必ずカタログソーステーブルへのアクセスを拡張してください。新しいサービスプリンシパルと認証情報の作成方法については、クラウドデータ取り込みのページを参照してください。
- ネットワークポリシーを設定している場合は、Braze に Microsoft Fabric インスタンスへのネットワークアクセスを許可する必要があります。IP のリストについては、クラウドデータ取り込みを参照してください。
JSON または CSV 形式を使用して S3 にソースファイルを作成します。各ファイルには次のフィールドを含める必要があります。
| フィールド | 必須? | 説明 |
|---|---|---|
ID |
はい | 作成または更新するカタログアイテムの ID。 |
PAYLOAD |
はい | Brazeのカタログアイテムに同期するフィールドの JSON 文字列。 |
DELETED |
オプション | true に設定すると、対応するカタログアイテムがカタログから削除されます。 |
UPDATED_AT |
非対応 | ファイルストレージでは UPDATED_AT 列はサポートされていません。 |

ファイル名は AWS のルールに従い、一意である必要があります。一意性を確保するためにタイムスタンプを付加してください。
完全な S3 セットアップには、S3 バケット、Amazon SQS キュー、および AWS IAM ロールとポリシーが必要です。Brazeは同期が作成された後にアップロードされたファイルのみを処理するため、取り込みたい既存のファイルは再アップロードしてください。
完全な S3 セットアップフローについては、ファイルストレージの統合を参照してください。特に以下をご覧ください。
AWS 側の通知や権限に関する一般的な問題については、Granting permissions to publish event notification messages to a destination を参照してください。
以下の例は、ファイルストレージからカタログデータを同期するための有効な JSON および CSV 形式を示しています。
{"id":"85","payload":"{\"product_name\":\"Product 85\",\"price\":85.85}"}
{"id":"86","payload":"{\"product_name\":\"Product 86\",\"price\":86.86}"}
{"id":"1","payload":"{\"product_name\":\"Product 1\",\"price\":1.01}","deleted":true}

ソースファイルの各行には有効な JSON が含まれている必要があります。そうでない場合、ファイルはスキップされます。
1
2
3
4
ID,PAYLOAD,DELETED
85,"{""product_name"": ""Product 85"", ""price"": 85.85}",false
86,"{""product_name"": ""Product 86"", ""price"": 86.86}",false
1,"{""product_name"": ""Product 1"", ""price"": 1.01}",true
1
2
3
ID,PAYLOAD
85,"{""product_name"": ""Product 85"", ""price"": 85.85}"
86,"{""product_name"": ""Product 86"", ""price"": 86.86}"
その他のファイル例については、ファイルストレージの統合を参照してください。
連携の仕組み

このセクションの同期ビューは、データウェアハウス連携にのみ適用されます。S3 ファイルストレージの場合、Brazeはバケットにアップロードされた新しいファイルを処理します。詳細については、ファイルストレージの統合を参照してください。
同期が実行されるたびに、Brazeは UPDATED_AT が最後に同期された値より後のすべての行を取り込みます。境界のタイムスタンプと同じ値を持つ新しい行がある場合、そのタイムスタンプの行が再同期されることがあります。カタログデータからデータウェアハウスにビューを作成し、同期が実行されるたびに完全にリフレッシュされるソーステーブルを設定することをお勧めします。ビューを使用すれば、クエリを毎回書き直す必要はありません。
例えば、product_id と 3 つの追加属性を含む製品データテーブル (product_catalog_1) がある場合、以下のビューを同期できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE VIEW BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
product_id as id,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
)as PAYLOAD FROM "product_catalog_1";
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
Product_id as id,
JSON_SERIALIZE(
OBJECT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
) as PAYLOAD FROM "product_catalog_1";
1
2
3
4
5
6
7
8
9
10
11
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS (SELECT
last_updated as UPDATED_AT,
product_id as ID,
TO_JSON(
STRUCT(
attribute_1,
attribute_2,
attribute_3,
)
) as PAYLOAD
FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.product_catalog_1`);
1
2
3
4
5
6
7
8
9
10
11
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS (SELECT
last_updated as UPDATED_AT,
product_id as ID,
TO_JSON(
STRUCT(
attribute_1,
attribute_2,
attribute_3,
)
) as PAYLOAD
FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.product_catalog_1`);
1
2
3
4
5
6
7
CREATE VIEW [braze].[user_update_example]
AS SELECT
id as ID,
CURRENT_TIMESTAMP as UPDATED_AT,
JSON_OBJECT('attribute_1':attribute_1, 'attribute_2':attribute_2, 'attribute_3':attribute_3, 'attribute_4':attribute_4) as PAYLOAD
FROM [braze].[product_catalog] ;
- 連携からフェッチされたデータは、指定された
idに基づいて、ターゲットカタログ内のアイテムの作成または更新に使用されます。 - DELETED が
trueに設定されている場合、対応するカタログアイテムが削除されます。 - 同期ではデータポイントは記録されませんが、同期されたすべてのデータはカタログ使用量の合計にカウントされます。この使用量は保存されたデータの総量に基づいて計測されるため、変更されたデータのみを同期することを心配する必要はありません。