Skip to content

カタログデータの同期と削除

このページでは、カタログデータの同期方法について説明します。

ステップ1:新しいカタログを作成する

カタログ用の新しいクラウドデータ取り込み(CDI)連携を作成する前に、新しいカタログを作成するか、連携に使用する既存のカタログを特定する必要があります。新しいカタログを作成するにはいくつかの方法があり、いずれもCDI連携に使用できます。

カタログスキーマの変更(新しいフィールドの追加やフィールドタイプの変更など)は、更新データがCDIを通じて同期される前に、カタログダッシュボードで行う必要があります。データウェアハウスのデータとBrazeのスキーマの間の競合を避けるために、同期が一時停止中または実行がスケジュールされていないときにこれらの更新を行うことをお勧めします。

ステップ2: クラウドデータ取り込みをカタログデータと統合する

カタログ同期の設定は、ユーザーデータのCDI統合のプロセスとほぼ同じです。

  1. 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
     );
    
  2. ロール、ウェアハウス、ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報がある場合はそれを再利用できますが、カタログソーステーブルへのアクセスを拡張してください。
    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;
    
  3. Snowflakeアカウントにネットワークポリシーがある場合は、CDIサービスが接続できるようにBrazeのIPを許可リストに追加してください。IPの一覧については、クラウドデータ取り込みを参照してください。
  4. Brazeダッシュボードで、テクノロジーパートナー > Snowflakeに移動し、新しい同期を作成します。
  5. 接続の詳細(または既存の認証情報を再利用)とソーステーブルを入力します。
  6. 設定フローのステップ2に進み、「Catalogs」同期タイプを選択して、統合名とスケジュールを入力します。統合名は、以前に作成したカタログの名前と完全に一致する必要があります。
  7. 同期頻度を選択し、次のステップに進みます。
  8. ダッシュボードに表示される公開キーを、BrazeがSnowflakeに接続するために作成したユーザーに追加します。このステップを完了するには、SnowflakeでSECURITYADMIN以上のアクセス権を持つユーザーが必要です。
  9. 接続テストを選択して、すべてが期待どおりに動作することを確認します。
  10. 同期を保存し、同期されたカタログデータをすべてのパーソナライゼーションのユースケースに活用します。
  1. 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
     )
    
  2. ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報がある場合はそれを再利用できますが、カタログソーステーブルへのアクセスを拡張してください。

    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;
    
  3. ファイアウォールやその他のネットワークポリシーがある場合は、RedshiftインスタンスへのネットワークアクセスをBrazeに許可する必要があります。Brazeダッシュボードのリージョンに対応する以下のIPからのアクセスを許可してください。IPの一覧については、クラウドデータ取り込みを参照してください。
  1. 必要に応じて、ソーステーブルを保持する新しいプロジェクトまたはデータセットを設定します。
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
  1. ユーザーを設定し、適切な権限を付与します。既存の同期の認証情報がある場合はそれを再利用できますが、カタログソーステーブルへのアクセスを拡張してください。 サービスアカウントには、以下のセクションの権限が必要です。
    • BigQuery Connection User: Brazeが接続を確立できるようにします。
    • BigQuery User: Brazeにクエリの実行、データセットメタデータの読み取り、テーブルの一覧表示へのアクセスを提供します。
    • BigQuery Data Viewer: Brazeにデータセットとその内容の表示アクセスを提供します。
    • BigQuery Job User: Brazeにジョブの実行アクセスを提供します。

      サービスアカウントを作成して権限を付与した後、JSONキーを生成します。詳細については、キーの作成と削除を参照してください。これは後でBrazeダッシュボードに更新します。
  1. ネットワークポリシーがある場合は、BigQueryインスタンスへのネットワークアクセスをBrazeに許可する必要があります。IPの一覧については、クラウドデータ取り込みを参照してください。
  1. 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, or MAP REQUIRED
ID STRING REQUIRED
DELETED BOOLEAN NULLABLE
  1. Databricksワークスペースで個人アクセストークンを作成します。
  • a. Databricksのユーザー名を選択し、ドロップダウンメニューからUser Settingsを選択します。
  • b. Access tokensタブで、Generate new tokenを選択します。
  • c. このトークンを識別するのに役立つコメント(「Braze CDI」など)を入力します。
  • d. Lifetime (days)ボックスを空白のままにして、トークンの有効期間を無期限に変更します。Generateを選択します。
  • e. 表示されたトークンをコピーし、Doneを選択します。
  • f. Brazeダッシュボードの認証情報作成ステップで入力する必要があるまで、トークンを安全な場所に保管してください。
  1. ネットワークポリシーがある場合は、DatabricksインスタンスへのネットワークアクセスをBrazeに許可する必要があります。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
  1. サービスプリンシパルを設定し、適切な権限を付与します。既存の同期の認証情報がある場合はそれを再利用できますが、カタログソーステーブルへのアクセスを拡張してください。新しいサービスプリンシパルと認証情報の作成方法については、クラウドデータ取り込みのページを参照してください。
  1. ネットワークポリシーがある場合は、Microsoft FabricインスタンスへのネットワークアクセスをBrazeに許可する必要があります。IPの一覧については、クラウドデータ取り込みを参照してください。

JSONまたはCSV形式でS3にソースファイルを作成します。各ファイルには以下のフィールドを含める必要があります。

フィールド 必須? 説明
ID はい 作成または更新するカタログアイテムのIDです。
PAYLOAD はい Brazeのカタログアイテムに同期するフィールドのJSON文字列です。
DELETED 任意 trueに設定すると、対応するカタログアイテムがカタログから削除されます。
UPDATED_AT 非対応 ファイルストレージではUPDATED_AT列はサポートされていません。

S3の完全な設定には、S3バケット、Amazon SQSキュー、AWS IAMロールとポリシーが必要です。Brazeは同期が作成された後にアップロードされたファイルのみを処理するため、取り込みたい既存のファイルは再アップロードしてください。

S3の完全な設定フローについては、ファイルストレージ統合、特に以下を参照してください。

AWS側の通知や権限に関する一般的な問題については、宛先にイベント通知メッセージを公開する権限の付与を参照してください。

以下の例は、ファイルストレージからカタログデータを同期するための有効な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}
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}"

その他のファイル例については、ファイルストレージ統合を参照してください。

連携の仕組み

同期が実行されるたびに、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に設定されている場合、対応するカタログアイテムが削除されます。
  • 同期ではデータポイントは記録されませんが、同期されたすべてのデータはカタログ使用量の合計にカウントされます。この使用量は保存されたデータの合計に基づいて測定されるため、変更されたデータのみを同期することを心配する必要はありません。
New Stuff!