Passer au contenu

Ingestion de données cloud pour Snowflake

Cette page présente tout ce dont vous avez besoin pour synchroniser des données de Snowflake vers Braze à l’aide de l’ingestion de données cloud (CDI) : les ressources à créer dans Snowflake, la connexion de la source et la création d’une synchronisation dans Braze, la table source de chaque type de données, ainsi que la résolution des problèmes propres à Snowflake.

Aperçu de la configuration

  1. Dans votre instance Snowflake, configurez les tables ou les vues que vous souhaitez synchroniser avec Braze.
  2. Configurez un rôle et un entrepôt pour Braze.
  3. Configurez un utilisateur Snowflake pour Braze avec l’une des méthodes d’authentification prises en charge.
  4. Créez une nouvelle source Snowflake dans le tableau de bord de Braze, puis finalisez l’authentification dans Snowflake.
  5. Créez une synchronisation dans le tableau de bord de Braze, validez l’intégration et lancez la synchronisation.

Étape 1 : Configurer votre table source

Les étapes de cette section créent une table avec une colonne payload. Si vous prévoyez de mapper des colonnes avec Visuel ou d’écrire une requête avec SQL à l’étape Définition des données, vous pouvez utiliser une table ou une vue existante. Dans ce cas, ignorez l’étape de création de la table et accordez à Braze un accès en lecture aux tables ou vues que vous souhaitez synchroniser. Pour comparer les options, consultez Choisir une option de définition des données.

Vous pouvez nommer la base de données, le schéma et la table comme vous le souhaitez, mais les noms de colonnes doivent correspondre aux définitions des onglets suivants. Vous pouvez également utiliser une vue ou une vue matérialisée au lieu d’une table.

Sélectionnez l’onglet correspondant au type de données que vous souhaitez synchroniser.

Les attributs utilisateur, les événements personnalisés et les événements d’achat utilisent tous la même structure de table source. Seul le contenu de payload diffère.

CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC (
     UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
     --at least one of external_id, alias_name and alias_label, email, phone, or braze_id is required
     EXTERNAL_ID VARCHAR(16777216),
     --if using user alias, both alias_name and alias_label are required
     ALIAS_LABEL VARCHAR(16777216),
     ALIAS_NAME VARCHAR(16777216),
     --braze_id can only be used to update existing users created through the Braze SDK
     BRAZE_ID VARCHAR(16777216),
     --If you include both email and phone, email is used as the primary identifier
     EMAIL VARCHAR(16777216),
     PHONE VARCHAR(16777216),
     PAYLOAD VARCHAR(16777216) NOT NULL
);
  • UPDATED_AT - L’heure à laquelle cette ligne a été mise à jour ou ajoutée à la table. Braze synchronise 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 resynchronisées si de nouvelles lignes partagent ce même horodatage.
  • Colonnes d’identifiant utilisateur - Votre table peut contenir une ou plusieurs colonnes d’identifiant utilisateur. Chaque ligne ne doit contenir qu’un seul identifiant (soit external_id, soit la combinaison de alias_name et alias_label, soit braze_id, email ou phone). Une table source peut comporter des colonnes pour un, deux, trois, quatre ou les cinq types d’identifiants.
    • EXTERNAL_ID - Identifie l’utilisateur que vous souhaitez mettre à jour. Cette valeur doit correspondre à la valeur external_id utilisée dans Braze.
    • ALIAS_NAME et ALIAS_LABEL - Ces deux colonnes créent un objet alias d’utilisateur. alias_name doit être un identifiant unique, et alias_label indique le type d’alias. Les utilisateurs peuvent avoir plusieurs alias avec des libellés différents, mais un seul alias_name par alias_label.
    • BRAZE_ID - L’identifiant utilisateur Braze. Il est généré par le SDK de Braze, et il n’est pas possible de créer de nouveaux utilisateurs à l’aide d’un ID Braze via l’ingestion de données cloud. Pour créer de nouveaux utilisateurs, indiquez un ID utilisateur externe ou un alias d’utilisateur.
    • EMAIL - L’adresse e-mail de l’utilisateur. Si plusieurs profils partagent la même adresse e-mail, le profil mis à jour le plus récemment est prioritaire pour les mises à jour. Si vous incluez à la fois l’e-mail et le numéro de téléphone, l’e-mail sert d’identifiant principal.
    • PHONE - Le numéro de téléphone de l’utilisateur. Si plusieurs profils partagent le même numéro de téléphone, le profil mis à jour le plus récemment est prioritaire pour les mises à jour.
  • payload - Il s’agit d’une chaîne de caractères JSON contenant les champs que vous souhaitez synchroniser avec l’utilisateur dans Braze.

Pour les synchronisations d’attributs, payload suit le format de l’objet des attributs utilisateur. Vous pouvez inclure des attributs personnalisés imbriqués, des tableaux d’objets et des statuts de groupe d’abonnement. Pour des exemples de payload, consultez Configuration de la table.

Les événements personnalisés utilisent la même table source que les attributs utilisateur. Créez la table présentée dans l’onglet Attributs utilisateur, puis renseignez payload avec un objet d’événement.

Pour synchroniser des événements, un nom d’événement est requis. Formatez le champ time sous forme de chaîne de caractères ISO 8601 ou au format yyyy-MM-dd'T'HH:mm:ss:SSSZ. Si le champ time est absent, Braze utilise la valeur de la colonne UPDATED_AT comme heure de l’événement. Les autres champs, notamment app_id et properties, sont facultatifs.

Vous pouvez synchroniser un événement par ligne.

{
    "app_id" : "your-app-id",
    "name" : "rented_movie",
    "time" : "2013-07-16T19:20:45+01:00",
    "properties": {
        "movie": "The Sad Egg",
        "director": "Alex Smith"
    }
}

Les événements d’achat utilisent la même table source que les attributs utilisateur. Créez la table présentée dans l’onglet Attributs utilisateur, puis renseignez payload avec un objet d’achat.

Pour synchroniser des événements d’achat, product_id, currency et price sont requis. Formatez le champ facultatif time sous forme de chaîne de caractères ISO 8601 ou au format yyyy-MM-dd'T'HH:mm:ss:SSSZ. Si le champ time est absent, Braze utilise la valeur de la colonne UPDATED_AT comme heure de l’événement. Les autres champs, notamment app_id, quantity et properties, sont facultatifs.

Vous pouvez synchroniser un événement d’achat par ligne.

{
    "app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
    "product_id" : "Completed Order",
    "currency" : "USD",
    "price" : 219.98,
    "time" : "2013-07-16T19:20:30+01:00",
    "properties" : {
        "products" : [ { "name": "Monitor", "category": "Gaming", "product_amount": 19.99 },
        { "name": "Gaming Keyboard", "category": "Gaming ", "product_amount": 199.99 }
        ]
    }
}

Avant de créer une synchronisation de catalogue, créez le catalogue cible dans Braze. Pour le workflow complet des catalogues, consultez Synchroniser et supprimer des données de catalogue.

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
);

Accordez au rôle Braze l’accès à cette table, en plus de vos autres tables sources :

GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC TO ROLE BRAZE_INGESTION_ROLE;

Le nom de l’intégration doit correspondre exactement au nom du catalogue que vous avez créé dans Braze.

Braze recommande de créer une vue à partir de vos données de catalogue afin que la table source soit entièrement actualisée à chaque exécution de la synchronisation. Par exemple, si vous disposez d’une table de données produits (product_catalog_1) avec product_id et trois attributs supplémentaires, vous pouvez synchroniser la vue suivante :

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";

Les déclencheurs Canvas alimentent la personnalisation zero-copy. Pour la configuration du Canvas de destination et les points à prendre en compte, consultez Personnalisation zero-copy.

CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC (
     UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
     --at least one of external_id or alias_name and alias_label is required
     EXTERNAL_ID VARCHAR(16777216),
     --if using user alias, both alias_name and alias_label are required
     ALIAS_LABEL VARCHAR(16777216),
     ALIAS_NAME VARCHAR(16777216),
     PROPERTIES VARCHAR(16777216)
);

Les synchronisations de déclencheurs Canvas diffèrent des autres synchronisations de données utilisateur sur trois points :

  • Seuls les identifiants de type ID externe ou alias d’utilisateur sont pris en charge. Les adresses e-mail et les numéros de téléphone ne sont pas des identifiants pris en charge.
  • Seuls les utilisateurs Braze existants peuvent être synchronisés. Il n’est pas possible de créer de nouveaux utilisateurs.
  • PROPERTIES remplace la colonne payload. Il s’agit d’une chaîne de caractères JSON contenant les champs que vous souhaitez utiliser comme propriétés d’entrée du Canvas pour la personnalisation.

Votre table de déclencheurs Canvas doit contenir les colonnes suivantes :

  • UPDATED_AT - Le moment où cette ligne a été mise à jour ou ajoutée à la table. Braze synchronise 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 resynchronisées si de nouvelles lignes partagent ce même horodatage.
  • Soit EXTERNAL_ID, soit ALIAS_NAME et ALIAS_LABEL comme colonne d’identifiant utilisateur. Ces colonnes identifient les utilisateurs pour lesquels vous souhaitez déclencher des messages Canvas.
    • EXTERNAL_ID - Identifie l’utilisateur à faire entrer dans le Canvas. Cette valeur doit correspondre à la valeur external_id utilisée dans Braze.
    • ALIAS_NAME et ALIAS_LABEL - Ces colonnes créent un objet alias d’utilisateur. alias_name doit être un identifiant unique, et alias_label indique le type d’alias. Les utilisateurs peuvent avoir plusieurs alias avec des libellés différents, mais un seul alias_name par alias_label.
  • PROPERTIES - Une chaîne de caractères JSON contenant les champs à rendre disponibles comme propriétés de personnalisation dans votre Canvas. Elle doit contenir des informations propres à chaque utilisateur.

Accordez au rôle Braze l’accès à cette table :

GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC TO ROLE BRAZE_INGESTION_ROLE;

Pour commencer, sélectionnez le type de données Déclencheurs Canvas lors de la création d’une nouvelle synchronisation.

Les tables sources pour les suppressions d’utilisateurs doivent inclure un ou plusieurs types d’identifiants utilisateur ainsi qu’un horodatage UPDATED_AT. Les colonnes de payload ne sont pas prises en charge pour les données de suppression d’utilisateurs.

  • UPDATED_AT - L’heure à laquelle cette ligne a été mise à jour ou ajoutée à la table. Braze synchronise 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 resynchronisées si de nouvelles lignes partagent ce même horodatage.
  • Colonnes d’identifiant utilisateur - Chaque ligne ne doit contenir qu’un seul identifiant : soit external_id, soit la combinaison de alias_name et alias_label, soit braze_id. Une table source peut contenir des colonnes pour un, deux ou les trois types d’identifiants.
    • EXTERNAL_ID - Identifie l’utilisateur que vous souhaitez mettre à jour. Cette valeur doit correspondre à la valeur external_id utilisée dans Braze.
    • ALIAS_NAME et ALIAS_LABEL - Ces deux colonnes créent un objet alias d’utilisateur. alias_name doit être un identifiant unique, et alias_label indique le type d’alias. Les utilisateurs peuvent avoir plusieurs alias avec des libellés différents, mais un seul alias_name par alias_label.
    • BRAZE_ID - L’identifiant utilisateur Braze. Il est généré par le SDK de Braze, et il n’est pas possible de créer de nouveaux utilisateurs à l’aide d’un ID Braze via Cloud Data Ingestion. Pour créer de nouveaux utilisateurs, indiquez un ID utilisateur externe ou un alias d’utilisateur.
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_DELETES (
     UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
     --at least one of external_id, alias_name and alias_label, or braze_id is required
     EXTERNAL_ID VARCHAR(16777216),
     --if using user alias, both alias_name and alias_label are required
     ALIAS_LABEL VARCHAR(16777216),
     ALIAS_NAME VARCHAR(16777216),
     --braze_id can only be used to update existing users created through the Braze SDK
     BRAZE_ID VARCHAR(16777216)
);

Sur la page Créer une synchronisation d’importation, définissez le Type de données sur Supprimer des utilisateurs afin que les actions appropriées soient effectuées lors de l’exécution de l’intégration. Pour plus d’informations, consultez Supprimer des utilisateurs avec l’ingestion de données cloud.

Étape 2 : Configurer le rôle et l’entrepôt

Étape 2.1 : Configurer le rôle et les autorisations de base de données

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.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;

Modifiez les noms si nécessaire, mais les autorisations doivent correspondre à l’exemple précédent.

Étape 2.2 : Configurer l’entrepôt et donner l’accès au rôle Braze

CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE;

GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE;

Étape 2.3 : Autoriser les IP de Braze dans la politique réseau de Snowflake (facultatif)

Selon la configuration de votre compte Snowflake, vous devrez peut-être autoriser les adresses IP suivantes dans votre politique réseau Snowflake. Pour plus d’informations sur cette opération, consultez la documentation Snowflake sur la modification d’une politique réseau.

Pour les instances US-01, US-02, US-03, US-04, US-05, US-06, US-07, voici les adresses IP correspondantes :

  • 23.21.118.191
  • 34.206.23.173
  • 50.16.249.9
  • 52.4.160.214
  • 54.87.8.34
  • 54.156.35.251
  • 52.54.89.238
  • 18.205.178.15

Pour l’instance US-08, voici les adresses IP correspondantes :

  • 52.151.246.51
  • 52.170.163.182
  • 40.76.166.157
  • 40.76.166.170
  • 40.76.166.167
  • 40.76.166.161
  • 40.76.166.156
  • 40.76.166.166
  • 40.76.166.160
  • 40.88.51.74
  • 52.154.67.17
  • 40.76.166.80
  • 40.76.166.84
  • 40.76.166.85
  • 40.76.166.81
  • 40.76.166.71
  • 40.76.166.144
  • 40.76.166.145

Pour l’instance US-10, voici les adresses IP correspondantes :

  • 100.25.232.164
  • 35.168.86.179
  • 52.7.44.117
  • 3.92.153.18
  • 35.172.3.129
  • 50.19.162.19

Pour les instances EU-01 et EU-02, voici les adresses IP correspondantes :

  • 52.58.142.242
  • 52.29.193.121
  • 35.158.29.228
  • 18.157.135.97
  • 3.123.166.46
  • 3.64.27.36
  • 3.65.88.25
  • 3.68.144.188
  • 3.70.107.88

Pour l’instance AU-01, voici les adresses IP correspondantes :

  • 13.210.1.145
  • 13.211.70.159
  • 13.238.45.54
  • 52.65.73.167
  • 54.153.242.239
  • 54.206.45.213

Pour l’instance ID-01, voici les adresses IP correspondantes :

  • 108.136.157.246
  • 108.137.30.207
  • 16.78.128.71
  • 16.78.14.134
  • 16.78.162.208
  • 43.218.73.35

Pour l’instance JP-01, voici les adresses IP correspondantes :

  • 13.159.155.212
  • 54.199.221.241
  • 13.192.23.16
  • 54.250.120.139
  • 18.181.114.232
  • 3.114.38.100

Pour l’instance KR-01, voici les adresses IP correspondantes :

  • 43.200.215.4
  • 52.79.67.175
  • 52.79.113.60
  • 3.34.212.92
  • 54.116.134.231
  • 3.37.197.225

Étape 3 : Configurer l’authentification

Braze se connecte à Snowflake en tant qu’utilisateur Snowflake disposant du rôle défini à l’étape 2. Configurez cet utilisateur avec l’une des méthodes d’authentification suivantes :

Méthode Mode d’authentification de Braze Informations à saisir dans Braze
Key pair authentication Braze generates an RSA key pair and connects as a Snowflake user that has the public key assigned. Username and Role

Key pair authentication

Avec l’authentification par paire de clés, Braze génère une paire de clés RSA lorsque vous enregistrez vos identifiants dans le tableau de bord de Braze. Vous attribuez ensuite la clé publique à un utilisateur Snowflake que Braze utilise pour se connecter.

Configurer l’utilisateur

Créez un utilisateur pour Braze et attribuez-lui le rôle que vous avez créé :

CREATE USER BRAZE_INGESTION_USER;

GRANT ROLE BRAZE_INGESTION_ROLE TO USER BRAZE_INGESTION_USER;

Ajouter la clé publique à l’utilisateur

Effectuez cette étape après avoir saisi vos identifiants dans le tableau de bord de Braze et sélectionné Enregistrer les identifiants. Braze génère la paire de clés et affiche la clé publique. Ajoutez la clé publique à l’utilisateur que vous avez créé pour Braze :

ALTER USER BRAZE_INGESTION_USER SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BA...';

L’attribution de la clé nécessite un accès SECURITYADMIN ou supérieur dans Snowflake. Pour plus d’informations, consultez la documentation de Snowflake.

Pour effectuer une rotation des clés, accédez à Gestion de l’accès aux données dans Ingestion de données cloud, puis sélectionnez Générer une nouvelle clé pour le compte. Attribuez ensuite la nouvelle clé publique à l’utilisateur. Si vous réutilisez le même utilisateur et le même rôle pour plusieurs intégrations, vous n’avez pas besoin d’ajouter à nouveau la clé publique.

Étape 4 : Créer une nouvelle source dans le tableau de bord de Braze

Dans le tableau de bord de Braze, accédez à Paramètres des données > Ingestion de données cloud > Sources, sélectionnez Ajouter une source de données, puis sélectionnez Snowflake.

Étape 4.1 : Ajouter les informations de connexion Snowflake

Choisissez un nom pour votre source et saisissez vos identifiants et votre configuration Snowflake, puis passez à l’étape suivante. Sélectionnez la méthode d’authentification configurée à l’étape 3 et saisissez les identifiants correspondants :

Avant de continuer, vérifiez la valeur que vous saisissez dans Localisateur de compte Snowflake.

Dans le champ Localisateur de compte Snowflake, saisissez votre identifiant de compte Snowflake. Saisissez uniquement la valeur de l’identifiant de compte, par exemple myorganization-myaccount. N’incluez pas https://, .snowflakecomputing.com ni aucun chemin.

Pour trouver votre identifiant de compte Snowflake :

  1. Dans Snowsight, sélectionnez le menu de votre compte.
  2. Sélectionnez View account details.
  3. Copiez la valeur Account identifier.
  4. Si vous copiez la valeur depuis une URL Snowflake, utilisez uniquement la partie qui précède .snowflakecomputing.com.

Étape 4.2 : Finaliser l’authentification dans Snowflake

Après avoir saisi vos identifiants et votre configuration, sélectionnez Enregistrer les identifiants. Pour l’authentification par paire de clés, Braze génère une paire de clés RSA et affiche la clé publique. Retournez dans Snowflake et ajoutez la clé publique à l’utilisateur que vous avez créé pour Braze.

Étape 5 : Créer une nouvelle synchronisation dans le tableau de bord de Braze

Accédez à Paramètres des données > Ingestion de données cloud > Synchronisations, puis sélectionnez Créer une synchronisation de données.

Configurer les détails de la synchronisation et définir vos données

Saisissez un nom pour votre synchronisation. Sélectionnez ensuite une source active et un type de données de synchronisation. Puis sélectionnez Visuel ou Table et saisissez votre table source, ou sélectionnez SQL pour écrire une requête SQL personnalisée. Enfin, sélectionnez Prévisualiser et valider.

Une fois la validation réussie, un aperçu des données s’affiche. Sélectionnez Suivant : Notifications pour continuer. Si la validation échoue, un message d’erreur s’affiche pour vous aider à résoudre le problème.

Ajouter des préférences de notification

Saisissez une ou plusieurs adresses e-mail de contact pour recevoir les notifications d’erreurs de synchronisation. Braze utilise ces coordonnées pour vous informer des erreurs d’intégration, comme une perte inattendue de l’accès à une table.

Les adresses e-mail de contact reçoivent uniquement les notifications d’erreurs globales ou au niveau de la synchronisation, par exemple des tables manquantes ou des problèmes d’autorisations. Elles ne sont pas notifiées des problèmes au niveau des lignes. Les erreurs globales signalent des problèmes critiques de connexion qui empêchent l’exécution des synchronisations.

Il peut notamment s’agir des problèmes suivants :

  • Problèmes de connectivité
  • Manque de ressources
  • Problèmes d’autorisations
  • Espace insuffisant pour le niveau de catalogue (synchronisations de catalogues uniquement)

Définir la planification

Enfin, configurez votre synchronisation comme ponctuelle ou récurrente.

Les synchronisations ponctuelles s’exécutent uniquement lorsque vous sélectionnez Synchroniser maintenant dans le tableau de bord ou que vous appelez l’endpoint Déclencher une synchronisation.

Les synchronisations récurrentes peuvent s’exécuter aussi souvent que toutes les 5 minutes ou aussi rarement qu’une fois par mois. Par défaut, l’intervalle le plus court que vous pouvez définir dans le tableau de bord est de 15 minutes, ce qui vous aide à maîtriser les coûts de calcul de votre entrepôt de données et le volume de requêtes. Pour synchroniser jusqu’à toutes les 5 minutes, contactez le support Braze ou votre gestionnaire de la satisfaction client. Braze planifie les synchronisations récurrentes en UTC.

Exécuter la synchronisation

Une fois activée, votre synchronisation s’exécute selon la planification définie lors de la configuration. Pour exécuter la synchronisation en dehors de sa planification ou récupérer les données les plus récentes, sélectionnez Synchroniser maintenant. Cette exécution n’a aucune incidence sur les synchronisations planifiées à venir. Pour lancer automatiquement une synchronisation lorsque vos données sont mises à jour, appelez l’endpoint Déclencher une synchronisation depuis votre pipeline.

Configurer des intégrations ou des utilisateurs supplémentaires (facultatif)

Vous pouvez configurer plusieurs intégrations avec Braze. Lorsque vous créez des synchronisations supplémentaires, vous pouvez réutiliser des identifiants existants si vous vous connectez au même compte Snowflake.

Si vous réutilisez le même utilisateur et le même rôle pour plusieurs intégrations, vous n’avez pas besoin d’ajouter à nouveau la clé publique.

Utiliser Snowflake comme source connectée

Une source connectée est une alternative zero-copy à la synchronisation des données dans Braze. Braze interroge directement votre instance Snowflake pour créer des segments CDI, sans copier les données sous-jacentes. Pour les concepts, les limites et les implications en matière de coûts, consultez Sources connectées.

Étape 1 : Créer un rôle et accorder les autorisations

Créez un rôle destiné à votre source connectée. Ce rôle sert à générer la liste des tables disponibles dans vos extensions de segments CDI et à interroger les tables sources pour créer de nouveaux segments. Une fois la source connectée créée, Braze découvre les noms et la description de toutes les tables accessibles à l’utilisateur dans le schéma source.

Vous pouvez accorder l’accès à toutes les tables d’un schéma, ou accorder des privilèges uniquement sur certaines tables. Toutes les tables auxquelles le rôle Braze a accès peuvent être interrogées dans l’extension de segment CDI.

L’autorisation create table est requise pour que Braze puisse créer une table contenant les résultats de la requête de votre extension de segment CDI avant de mettre à jour le segment dans Braze. Braze crée une table temporaire par segment, et cette table n’existe que pendant la mise à jour du segment.

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 CREATE TABLE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;

-- grant access to all current and future tables or views in the schema
GRANT SELECT ON ALL TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;

-- grant access to specific tables or views in the schema
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;

La configuration de l’entrepôt est identique à celle de l’étape 2.2, et celle de la politique réseau à celle de l’étape 2.3. Configurez l’utilisateur avec lequel Braze se connecte à l’aide de l’une des méthodes décrites à l’étape 3 : Configurer l’authentification.

Étape 2 : Créer la source connectée dans Braze

Accédez à Paramètres des données > Ingestion de données cloud > Sources connectées, sélectionnez Ajouter une source de données, puis sélectionnez Snowflake.

Dans Configurer la source, saisissez les informations suivantes :

  • Identifiants : Localisateur de compte et les champs correspondant à votre méthode d’authentification. Saisissez Username and Role.
  • Configuration : Entrepôt, Base de données et Schéma

Pour l’authentification par paire de clés, si vous créez de nouveaux identifiants Snowflake, sélectionnez Enregistrer les identifiants et générer la clé RSA avant de tester la connexion.

Choisissez un nom pour la source connectée. Ce nom apparaît dans la liste des sources disponibles lorsque vous créez une nouvelle extension de segment CDI.

Configurez une durée d’exécution maximale pour cette source. Braze interrompt automatiquement toute requête qui dépasse cette durée. La durée d’exécution maximale autorisée est de 60 minutes ; une durée plus courte réduit les coûts engagés sur votre compte Snowflake. Ce paramètre s’applique aux requêtes exécutées via cette source, y compris les synchronisations et les extensions de segments CDI qui l’utilisent.

Pour l’authentification par paire de clés, notez la clé publique RSA affichée à l’étape Tester la connexion. Vous en aurez besoin pour finaliser l’intégration dans Snowflake.

Étape 3 : Finaliser la configuration Snowflake

Pour l’authentification par paire de clés, ajoutez la clé publique notée à l’étape précédente à votre utilisateur dans Snowflake, comme décrit dans Ajouter la clé publique à l’utilisateur. Cela permet à Braze de se connecter à Snowflake.

Une fois l’authentification terminée dans Snowflake, sélectionnez Tester la connexion dans Braze, puis Terminé. Votre source connectée est désormais créée et prête à être utilisée dans les extensions de segments CDI.

Vous pouvez configurer plusieurs sources connectées avec Braze, mais chaque source doit être configurée pour se connecter à un schéma différent. Lorsque vous créez des connexions supplémentaires, vous pouvez réutiliser des identifiants existants si vous vous connectez au même compte Snowflake. Si vous réutilisez le même utilisateur et le même rôle pour plusieurs intégrations, vous n’avez pas besoin d’ajouter à nouveau la clé publique.

Formater un payload à partir de colonnes existantes

Si vous préférez stocker chaque attribut dans sa propre colonne en interne, vous devez convertir ces colonnes en chaîne de caractères JSON pour alimenter la synchronisation avec Braze. Utilisez cette requête dans Snowflake pour formater les colonnes sources en champs CDI.

CREATE TABLE "EXAMPLE_USER_DATA"
    (attribute_1 string,
     attribute_2 string,
     attribute_3 number,
     my_user_id string);

SELECT
    CURRENT_TIMESTAMP as UPDATED_AT,
    my_user_id as EXTERNAL_ID,
    TO_JSON(
        OBJECT_CONSTRUCT (
            'attribute_1',
            attribute_1,
            'attribute_2',
            attribute_2,
            'yet_another_attribute',
            attribute_3)
    )as PAYLOAD FROM "EXAMPLE_USER_DATA";

Pour supprimer complètement un attribut plutôt que de le définir sur null, utilisez TO_JSON(OBJECT_CONSTRUCT_KEEP_NULL(...)).

Pour d’autres conseils d’optimisation, consultez les bonnes pratiques de l’ingestion de données cloud.

Résolution des problèmes

Le test de connexion est lent

Le test de connexion s’exécute sur votre entrepôt de données : augmenter la capacité de l’entrepôt peut donc améliorer sa vitesse. L’utilisation d’une instance SQL serverless réduit le temps de démarrage et améliore le débit des requêtes, mais peut entraîner des coûts d’intégration légèrement plus élevés.

Erreur de connexion à l’instance Snowflake : Incoming request with IP is not allowed to access Snowflake

Essayez d’ajouter les IP officielles de Braze à votre liste d’IP autorisées. Pour plus d’informations, consultez Autoriser les IP de Braze dans la politique réseau de Snowflake.

Erreur d’exécution SQL due à la configuration client : 002003 (42S02): SQL compilation error: does not exist or not authorized

Si la table n’existe pas, créez-la. Si la table existe, vérifiez que l’utilisateur et le rôle disposent des autorisations nécessaires pour la lire.

Impossible d’utiliser le schéma

Si vous recevez cette erreur, accordez l’accès à ce schéma à l’utilisateur ou au rôle concerné.

Impossible d’utiliser le rôle

Si vous recevez cette erreur, autorisez cet utilisateur à utiliser le rôle concerné.

Accès utilisateur désactivé

Si vous recevez cette erreur, autorisez cet utilisateur à accéder à votre compte Snowflake.

Erreur de connexion à l’instance Snowflake avec la clé actuelle et l’ancienne clé

Si vous recevez cette erreur, assurez-vous que l’utilisateur utilise la clé publique actuelle telle qu’affichée dans votre tableau de bord de Braze. Pour effectuer une rotation des clés, consultez Ajouter la clé publique à l’utilisateur.

Où exécuter les vérifications SQL

Exécutez les vérifications de validation directement dans l’éditeur SQL de Snowflake, sur la table ou la vue utilisée par votre intégration CDI. Accédez à Projects > Worksheets. Pour plus d’informations, consultez Snowflake Worksheets.

New Stuff!