Synchronisation et suppression des données du catalogue
Cette page explique comment synchroniser les données du catalogue.
Étape 1 : Créer un nouveau catalogue
Avant de créer une nouvelle intégration d’Ingestion de données cloud (CDI) pour les catalogues, vous devez créer un nouveau catalogue ou identifier un catalogue existant que vous souhaitez utiliser pour l’intégration. Il existe plusieurs façons de créer un nouveau catalogue, et chacune d’entre elles fonctionnera pour l’intégration CDI :
- Télécharger un fichier CSV
- Créer un catalogue dans le tableau de bord de Braze ou lors de la configuration du CDI.
- Créer un catalogue à l’aide de l’endpoint Créer un catalogue
Toute modification du schéma du catalogue (par exemple, l’ajout de nouveaux champs ou la modification du type de champ) doit être effectuée via le tableau de bord du catalogue avant que les données mises à jour ne soient synchronisées via CDI. Nous vous recommandons d’effectuer ces mises à jour lorsque la synchronisation est en pause ou n’est pas planifiée afin d’éviter les conflits entre les données de votre entrepôt de données et le schéma dans Braze.
Étape 2 : Intégrer l’Ingestion de données cloud avec les données du catalogue
La configuration d’une synchronisation de catalogue suit de près le processus des intégrations CDI de données utilisateur.
- Créez une table source dans Snowflake. Vous pouvez utiliser les noms de l’exemple suivant ou choisir vos propres noms de base de données, de schéma et de table. Vous pouvez également utiliser une vue ou une vue matérialisée au lieu d’une table.
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 );
- Configurez un rôle, un entrepôt et un utilisateur, puis accordez les autorisations appropriées. Si vous disposez déjà d’informations d’identification provenant d’une synchronisation existante, vous pouvez les réutiliser, mais veillez à étendre l’accès à la table source du catalogue.
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;
- Si votre compte Snowflake dispose de politiques réseau, ajoutez les adresses IP de Braze à la liste d’autorisation afin que le service CDI puisse se connecter. Pour obtenir la liste des adresses IP, reportez-vous à la page Ingestion de données cloud.
- Dans le tableau de bord de Braze, accédez à Partenaires technologiques > Snowflake et créez une nouvelle synchronisation.
- Saisissez les détails de connexion (ou réutilisez des informations d’identification existantes) et la table source.
- Passez à l’étape 2 du flux de configuration, sélectionnez le type de synchronisation « Catalogues » et saisissez le nom de l’intégration ainsi que la planification. Notez que le nom de l’intégration doit correspondre exactement au nom du catalogue que vous avez précédemment créé.
- Choisissez une fréquence de synchronisation et passez à l’étape suivante.
- Ajoutez la clé publique affichée sur le tableau de bord à l’utilisateur que vous avez créé pour que Braze puisse se connecter à Snowflake. Pour effectuer cette étape, vous aurez besoin d’une personne disposant d’un accès
SECURITYADMINou supérieur dans Snowflake. - Sélectionnez Test Connection pour vérifier que tout fonctionne comme prévu.
- Enregistrez la synchronisation et utilisez les données de catalogue synchronisées pour tous vos cas d’utilisation de personnalisation.
- Créez une table source dans Redshift. Vous pouvez utiliser les noms de l’exemple suivant ou choisir vos propres noms de base de données, de schéma et de table. Vous pouvez également utiliser une vue ou une vue matérialisée au lieu d’une table.
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 )
-
Créez un utilisateur et accordez-lui les autorisations nécessaires. Si vous disposez déjà d’informations d’identification provenant d’une synchronisation existante, vous pouvez les réutiliser, mais veillez à étendre l’accès à la table source du catalogue.
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;
- Si vous disposez d’un pare-feu ou d’autres politiques réseau, vous devez donner à Braze un accès réseau à votre instance Redshift. Autorisez l’accès depuis les adresses IP ci-dessous correspondant à la région de votre tableau de bord de Braze. Pour obtenir la liste des adresses IP, reportez-vous à la page Ingestion de données cloud.
- Vous pouvez éventuellement créer un nouveau projet ou jeu de données pour héberger votre table source.
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
Créez une ou plusieurs tables à utiliser pour votre intégration CDI avec les champs suivants :
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
);
| NOM DU CHAMP | TYPE | MODE |
|---|---|---|
| UPDATED_AT | TIMESTAMP | REQUIS |
| payload | JSON | REQUIS |
| ID | STRING | REQUIS |
| DELETED | BOOLEAN | FACULTATIF |
- Créez un utilisateur et accordez-lui les autorisations nécessaires. Si vous disposez déjà d’informations d’identification provenant d’une synchronisation existante, vous pouvez les réutiliser, mais veillez à étendre l’accès à la table source du catalogue.
Le compte de service doit disposer des autorisations suivantes :
- BigQuery Connection User : permet à Braze d’établir des connexions.
- BigQuery User : permet à Braze d’exécuter des requêtes, de lire les métadonnées des jeux de données et de lister les tables.
- BigQuery Data Viewer : permet à Braze de visualiser les jeux de données et leur contenu.
- BigQuery Job User : permet à Braze d’exécuter des tâches.
Après avoir créé le compte de service et accordé les autorisations, générez une clé JSON. Pour plus d’informations, reportez-vous à la section Création et suppression de clés. Vous l’importerez dans le tableau de bord de Braze ultérieurement.
- Si vous avez mis en place des politiques réseau, vous devez donner à Braze un accès réseau à votre instance BigQuery. Pour obtenir la liste des adresses IP, reportez-vous à la page Ingestion de données cloud.
- Créez une table source dans Databricks. Vous pouvez utiliser les noms de l’exemple suivant ou choisir vos propres noms de catalogue, de schéma et de table. Vous pouvez également utiliser une vue ou une vue matérialisée au lieu d’une table.
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
);
| NOM DU CHAMP | TYPE | MODE |
|---|---|---|
| UPDATED_AT | TIMESTAMP | REQUIS |
| payload | STRING, STRUCT ou MAP | REQUIS |
| ID | STRING | REQUIS |
| DELETED | BOOLEAN | NULLABLE |
- Créez un jeton d’accès personnel dans votre espace de travail Databricks.
- a. Sélectionnez votre nom d’utilisateur Databricks, puis sélectionnez User Settings dans le menu déroulant.
- b. Dans l’onglet Access tokens, sélectionnez Generate new token.
- c. Saisissez un commentaire qui vous aide à identifier ce jeton, par exemple « CDI Braze ».
- d. Définissez la durée de vie du jeton sur illimitée en laissant vide la case Lifetime (days). Sélectionnez Generate.
- e. Copiez le jeton affiché, puis sélectionnez Done.
- f. Conservez le jeton en lieu sûr jusqu’à ce que vous ayez besoin de le saisir lors de l’étape de création des identifiants dans le tableau de bord de Braze.
- Si vous avez mis en place des politiques réseau, vous devez donner à Braze un accès réseau à votre instance Databricks. Pour obtenir la liste des adresses IP, consultez la page Ingestion de données cloud.
Créez une ou plusieurs tables à utiliser pour votre intégration CDI avec les champs suivants :
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
- Mettez en place un principal de service et accordez les autorisations appropriées. Si vous disposez déjà d’informations d’identification provenant d’une synchronisation existante, vous pouvez les réutiliser, mais veillez à étendre l’accès à la table source du catalogue. Pour en savoir plus sur la création d’un nouveau principal de service et d’informations d’identification, consultez la page Ingestion de données cloud.
- Si vous avez mis en place des politiques réseau, vous devez donner à Braze un accès réseau à votre instance Microsoft Fabric. Pour obtenir la liste des adresses IP, consultez la page Ingestion de données cloud.
Créez des fichiers source dans S3 au format JSON ou CSV. Chaque fichier doit inclure les champs suivants :
| Champ | Requis ? | Description |
|---|---|---|
ID |
Oui | L’ID de l’élément de catalogue à créer ou à mettre à jour. |
payload |
Oui | Une chaîne JSON des champs à synchroniser avec l’élément de catalogue dans Braze. |
DELETED |
Facultatif | Lorsque défini sur true, l’élément de catalogue correspondant est supprimé du catalogue. |
UPDATED_AT |
Non pris en charge | Le stockage de fichiers ne prend pas en charge les colonnes UPDATED_AT. |

Les noms de fichiers doivent respecter les règles AWS et être uniques. Ajoutez des horodatages pour garantir l’unicité.
La configuration complète de S3 nécessite un compartiment S3, une file d’attente Amazon SQS, ainsi qu’un rôle et une politique AWS IAM. Braze ne traite que les fichiers téléchargés après la création de la synchronisation : téléchargez à nouveau les fichiers existants que vous souhaitez ingérer.
Pour le flux de configuration complet de S3, consultez Intégrations de stockage de fichiers, en particulier :
- Configuration de l’Ingestion de données cloud dans AWS
- Configuration de l’Ingestion de données cloud dans Braze
- Résolution des problèmes
Pour les problèmes courants de notifications et d’autorisations côté AWS, consultez Accorder des autorisations pour publier des messages de notification d’événements vers une destination.
Les exemples suivants montrent des formats JSON et CSV valides pour synchroniser des données de catalogue depuis un stockage de fichiers.
{"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}

Chaque ligne de votre fichier source doit contenir du JSON valide, sinon le fichier est ignoré.
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}"
Pour des exemples de fichiers supplémentaires, consultez Intégrations de stockage de fichiers.
Comment fonctionne l’intégration

Les vues de synchronisation de cette section s’appliquent uniquement aux intégrations d’entrepôts de données. Pour le stockage de fichiers S3, Braze traite les nouveaux fichiers au fur et à mesure de leur téléchargement dans votre compartiment. Consultez Intégrations de stockage de fichiers pour plus de détails.
À chaque exécution de la synchronisation, Braze récupère toutes les lignes dont la valeur UPDATED_AT est postérieure à la dernière valeur synchronisée. Les lignes situées exactement à l’horodatage limite peuvent être re-synchronisées si de nouvelles lignes partagent le même horodatage. Nous vous recommandons de créer une vue dans votre entrepôt de données à partir de vos données de catalogue afin de mettre en place une table source qui sera entièrement actualisée à chaque exécution de la synchronisation. Avec les vues, vous n’aurez pas besoin de réécrire la requête à chaque fois.
Par exemple, si vous avez une table de données produit (product_catalog_1) avec product_id et trois attributs supplémentaires, vous pouvez synchroniser la vue ci-dessous :
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] ;
- Les données extraites de l’intégration seront utilisées pour créer ou mettre à jour des éléments dans le catalogue cible en fonction de l’
idfourni. - Si DELETED est défini sur
true, l’élément de catalogue correspondant sera supprimé. - La synchronisation ne consomme pas de points de donnée, mais toutes les données synchronisées sont comptabilisées dans l’utilisation totale de votre catalogue. Cette utilisation est mesurée en fonction du volume total de données stockées : vous n’avez donc pas besoin de vous limiter à la synchronisation des seules données modifiées.