Synchronisation et suppression des données du catalogue
Étape 1 : Créer un nouveau catalogue
Avant de créer une nouvelle intégration CDI (Cloud Data Ingestion) pour les catalogues, vous devrez 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 :
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 Cloud Data Ingestion 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 un tableau des sources 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
);
|
- Set up a role, warehouse, and user and grant proper permissions. If you already have credentials from an existing sync, you can reuse them, just make sure to extend access to the catalog source table.
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;
|
- If your Snowflake account has network policies, allowlist the Braze IPs so the CDI service can connect. For a list of IPs, see the Cloud Data Ingestion.
- In the Braze dashboard, navigate to Technology Partners > Snowflake, and create a new sync.
- Enter connection details (or reuse existing credentials) and the source table.
- Proceed to step 2 of the setup flow, select the “Catalogs” sync type, and input the integration name and schedule. Note that the name of the integration should exactly match the name of the catalog you previously created.
- Choose a sync frequency and proceed to the next step.
- Add the public key displayed on the dashboard to the user you created for Braze to connect to Snowflake. To complete this step, you will need someone with
SECURITYADMIN
access or higher in Snowflake.
- Click Test Connection to ensure everything works as expected.
- Save the sync, and use the synced catalog data for all your personalization use cases.
- Set up a source table in Redshift. You can use the names in the following example or choose your own database, schema, and table names. You may also use a view or a materialized view instead of a 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
)
|
-
Set up a user and grant proper permissions. If you already have credentials from an existing sync, you can reuse them, just make sure to extend access to the catalog source table.
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;
|
- If you have a firewall or other network policies, you must give Braze network access to your Redshift instance. Allow access from the below IPs corresponding to your Braze dashboard’s region. For a list of IPs, see the Cloud Data Ingestion.
- Optionally, set up a new project or dataset to hold your source table.
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 |
DATE/HEURE |
REQUIS |
PAYLOAD |
JSON |
REQUIS |
ID |
CHAÎNE DE CARACTÈRES |
REQUIS |
SUPPRIMÉ |
BOOLÉEN |
OPTIONNEL |
- 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 :
- Utilisateur de connexion BigQuery : Cela permettra à Braze d’établir des connexions.
- Utilisateur BigQuery : Cela permettra à Braze d’accéder à l’exécution des requêtes, à la lecture des métadonnées des ensembles de données et à la liste des tableaux.
- Visualisateur des données BigQuery : Cela permettra à Braze d’accéder à la visualisation des ensembles de données et de leur contenu.
- Utilisateur des tâches BigQuery : Cela permettra à Braze d’accéder à l’exécution des travaux.
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 le mettrez à jour dans le tableau de bord de Braze ultérieurement.
3. Si vous avez mis en place des politiques de réseau, vous devez donner à Braze un accès réseau à votre instance BigQuery. Pour obtenir une liste des adresses IP, consultez la rubrique Cloud Data Ingestion.
- Créez une table source dans Databricks. Vous pouvez utiliser les noms de l’exemple suivant ou choisir vos 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
);
|
NOM DU CHAMP |
TYPE |
MODE |
UPDATED_AT |
DATE/HEURE |
REQUIS |
PAYLOAD |
JSON |
REQUIS |
ID |
CHAÎNE DE CARACTÈRES |
REQUIS |
SUPPRIMÉ |
BOOLÉEN |
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 Paramètres utilisateur dans le menu déroulant.
- b. Dans l’onglet Jetons d’accès, sélectionnez Générer un nouveau jeton.
- c. Saisissez un commentaire qui vous aide à identifier ce jeton, par exemple « CDI Braze ».
- d. Remplacez la durée de vie du jeton par aucune durée de vie en laissant vide la case Durée de vie (jours). Sélectionnez Générer.
- e. Copiez le jeton affiché, puis sélectionnez Terminé.
- f. Conservez le jeton en lieu sûr jusqu’à ce que vous ayez besoin de le saisir lors de l’étape de création d’identifiants dans le tableau de bord de Braze.
3. Si vous avez mis en place des politiques réseau, vous devez donner à Braze un accès réseau à votre instance Databricks. Pour obtenir une liste des adresses IP, consultez la page Cloud Data Ingestion.
Chaque fois que la synchronisation est exécutée, Braze récupère toutes les lignes pour lesquelles UPDATED_AT
est postérieur au dernier horodatage synchronisé. 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 fois qu’une synchronisation est exécutée. 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`);
|
- Les données extraites de l’intégration seront utilisées pour créer ou mettre à jour des articles dans le catalogue cible en fonction de l’adresse
id
fournie.
- Si DELETED est défini sur
true
, le produit de catalogue correspondant sera supprimé.
- La synchronisation ne consomme pas de points de données, mais toutes les données synchronisées sont prises en compte dans l’utilisation totale de votre catalogue. Cette utilisation est mesurée sur la base de l’ensemble des données stockées, vous n’avez donc pas à vous soucier de synchroniser uniquement les données modifiées.