Transférer des données d’Amazon S3 vers Snowflake
Si vos données se trouvent actuellement dans Amazon S3, vous pouvez les transférer vers Snowflake ou un autre entrepôt de données relationnel à l’aide du processus d’extraction, de chargement et de transformation (ELT). Cette page vous explique comment procéder.
Si vous avez des cas d’utilisation plus spécifiques et que vous souhaitez que Braze assure le service de votre instance de Currents, contactez votre gestionnaire de compte Braze et renseignez-vous sur les Braze Data Professional Services.
Fonctionnement
Le processus d’extraction, de chargement et de transformation (ELT) est un processus automatisé qui déplace les données dans Snowflake, ce qui vous permettra d’utiliser les blocs Looker de Braze pour visualiser ces données dans Looker afin d’aider à générer des informations et des retours dans vos campagnes, Canvas et segments.
Une fois que vous avez configuré une exportation Currents vers S3 et que vous recevez des données d’événements en direct, vous pouvez configurer votre pipeline ELT en direct dans Snowflake en configurant les composants suivants :
Configuration des files d’attente AWS SQS
Les Snowpipes à ingestion automatique s’appuient sur les files d’attente SQS pour envoyer des notifications de S3 vers Snowpipe. Ce processus est géré par Snowflake après la configuration de SQS.
Étape 1 : Configurer le stage S3 externe
Les tables de votre base de données sont créées à cette étape.
-
Lorsque vous configurez Currents dans Braze, spécifiez un chemin de dossier que vos fichiers Currents doivent suivre dans votre compartiment S3. Ici, nous utilisons
currents, le chemin de dossier par défaut. -
Créez les éléments suivants dans l’ordre indiqué : 2.1 Dans AWS, créez une nouvelle paire de clés publique-privée pour le compartiment S3 souhaité, avec des autorisations conformes aux exigences de sécurité de votre organisation. 2.2. Dans Snowflake, créez une base de données et un schéma de votre choix (nommés
currentsetpublicdans l’exemple suivant). 2.3. Créez un stage Snowflake S3 (appelébraze_data) :
1
2
3
4
5
CREATE OR REPLACE STAGE
currents.public.braze_data
url='s3://snowpipe-demo/'
credentials = (AWS_KEY_ID = '...' AWS_SECRET_KEY = '...' );
show stages;
- Définissez le format de fichier AVRO pour votre stage.
1
2
3
4
CREATE FILE FORMAT
currents.public.currents_avro
type = 'avro'
compression = 'auto';
1
2
3
4
ALTER STAGE
currents.public.braze_data
SET
file_format = currents.public.currents_avro;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE OR REPLACE PIPE
pipe_users_messages_pushnotification_open
auto_ingest=true AS
COPY INTO
users_messages_pushnotification_open
FROM
(SELECT
$1:id::STRING,
$1:user_id::STRING,
$1:external_user_id::STRING,
$1:time::INT,
$1:timezone::STRING,
$1:app_id::STRING,
$1:campaign_id::STRING,
$1:campaign_name::STRING,
$1:message_variation_id::STRING,
$1:canvas_id::STRING,
$1:canvas_name::STRING,
$1:canvas_variation_id::STRING,
$1:canvas_step_id::STRING,
$1:canvas_step_message_variation_id::STRING,
$1:platform::STRING,
$1:os_version::STRING,
$1:device_model::STRING,
$1:send_id::STRING,
$1:device_id::STRING,
$1:button_action_type::STRING,
$1:button_string::STRING
FROM
@currents.public.braze_data/currents/dataexport.prod-01.S3.integration.INTEGRATION_ID_GOES_HERE/event_type=users.messages.pushnotification.Open/);
- Enfin, utilisez la commande
show pipes;pour afficher les informations SQS. Le nom de la file d’attente SQS sera visible dans une nouvelle colonne appeléeNOTIFICATION_CHANNEL, car ce pipe a été créé en tant que pipe à ingestion automatique.
Étape 2 : Créer des événements de compartiment
- Dans AWS, accédez au compartiment correspondant au nouveau stage Snowflake. Ensuite, sous l’onglet Properties, accédez à Events.

- Créez de nouveaux événements pour chaque ensemble de données Currents, selon vos besoins (envoi de messages, comportement des utilisateurs), ou les deux.

- Cochez la case appropriée pour les notifications de création d’objet, ainsi que l’ARN en bas du formulaire (provenant de la colonne du canal de notification dans Snowflake).
Configuration des Snowpipes à ingestion automatique
Pour que la configuration AWS SQS produise les tables correctes, vous devez définir correctement la structure des données entrantes en utilisant les exemples et schémas suivants, déterminés dans notre documentation Currents pour les événements d’engagement de messages ou événements d’envoi de messages, les événements de comportement des utilisateurs ou des clients, ou les deux.
Il est essentiel de structurer vos tables conformément aux schémas de Braze Currents, car Braze Currents chargera continuellement des données dans celles-ci via des champs spécifiques avec des types de données spécifiques. Par exemple, un user_id sera chargé en tant que chaîne de caractères et sera appelé user_id dans les données Currents.
Selon votre intégration Currents, vous pouvez avoir différents événements à configurer (tels que les événements d’engagement de messages ou événements d’envoi de messages et les événements de comportement des utilisateurs ou des clients). Vous pouvez également écrire un script pour une partie ou la totalité de ce processus.
- Créez une table
INTOdans laquelle nous chargerons continuellement des données en utilisant la structure suivante issue du schéma Currents :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE
users_behaviors_app_firstsession (
id STRING,
user_id STRING,
external_user_id STRING,
app_id STRING,
time INT,
session_id STRING,
gender STRING,
country STRING,
timezone STRING,
language STRING,
device_id STRING,
sdk_version STRING,
platform STRING,
os_version STRING,
device_model STRING
);
- Créez le pipe
auto_ingestet spécifiez : 2.1. Quelle table charger 2.2 Comment charger la table suivante
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE OR REPLACE PIPE
pipe_users_behaviors_app_firstsession
auto_ingest=true AS
COPY INTO
users_behaviors_app_firstsession
FROM
(SELECT
$1:id::STRING,
$1:user_id::STRING,
$1:external_user_id::STRING,
$1:app_id::STRING,
$1:time::INT,
$1:session_id::STRING,
$1:gender::STRING,
$1:country::STRING,
$1:timezone::STRING,
$1:language::STRING,
$1:device_id::STRING,
$1:sdk_version::STRING,
$1:platform::STRING,
$1:os_version::STRING,
$1:device_model::STRING
FROM
@currents.public.braze_data/currents/dataexport.prod-01.S3.integration.INTEGRATION_ID_GOES_HERE/event_type=users.behaviors.app.FirstSession/);
Vous devez répéter les commandes CREATE TABLE et CREATE PIPE pour chaque type d’événement.
- Créez une table
INTOdans laquelle nous chargerons continuellement des données en utilisant la structure suivante issue du schéma Currents :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE
public_users_messages_pushnotification_open (
id STRING,
user_id STRING,
external_user_id STRING,
time INT,
timezone STRING,
app_id STRING,
campaign_id STRING,
campaign_name STRING,
message_variation_id STRING,
canvas_id STRING,
canvas_name STRING,
canvas_variation_id STRING,
canvas_step_id STRING,
canvas_step_message_variation_id STRING,
platform STRING,
os_version STRING,
device_model STRING,
send_id STRING,
device_id STRING,
button_action_type STRING,
button_string STRING
);
- Créez le pipe de chargement continu AUTO et spécifiez : 2.1. Quelle table charger 2.2 Comment charger la table suivante
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE OR REPLACE PIPE
pipe_users_messages_pushnotification_open
auto_ingest=true AS
COPY INTO
users_messages_pushnotification_open
FROM
(SELECT
$1:id::STRING,
$1:user_id::STRING,
$1:external_user_id::STRING,
$1:time::INT,
$1:timezone::STRING,
$1:app_id::STRING,
$1:campaign_id::STRING,
$1:campaign_name::STRING,
$1:message_variation_id::STRING,
$1:canvas_id::STRING,
$1:canvas_name::STRING,
$1:canvas_variation_id::STRING,
$1:canvas_step_id::STRING,
$1:canvas_step_message_variation_id::STRING,
$1:platform::STRING,
$1:os_version::STRING,
$1:device_model::STRING,
$1:send_id::STRING,
$1:device_id::STRING,
$1:button_action_type::STRING,
$1:button_string::STRING
FROM
@currents.public.braze_data/currents/dataexport.prod-01.S3.integration.INTEGRATION_ID_GOES_HERE/event_type=users.messages.pushnotification.Open/);
Vous devez répéter les commandes CREATE TABLE et CREATE PIPE pour chaque type d’événement.
Pour découvrir les types d’analyses que vous pouvez effectuer avec Braze Currents, consultez nos blocs Looker.
Contactez votre gestionnaire de compte Braze si vous avez des questions ou si vous souhaitez que Braze vous accompagne dans ce processus.