Skip to content

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 (ETL). Cette page vous explique comment procéder.

Comment cela fonctionne-t-il ?

Le processus d’extraction, de chargement et de transformation (ETL) 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, Canvases 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 Auto-ingest s’appuient sur les files d’attente SQS pour envoyer les notifications de S3 à Snowpipe. Ce processus est géré par Snowflake après la configuration de SQS.

Étape 1 : Configurez l’étage S3 externe

  1. Lorsque vous configurez Currents dans Braze, indiquez un chemin de dossier pour que vos fichiers Currents suivent dans votre compartiment S3. Nous utilisons ici currents, le chemin d’accès au dossier par défaut.

  2. 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 subventions 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 currents et public dans l’exemple suivant). 2.3. Créez une scène S3 Snowflake (appelée 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;

3. Définissez le format de fichier AVRO pour votre scène.

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

4. Enfin, utilisez la commande show pipes; pour afficher vos informations SQS. Le nom de la file d’attente SQS sera visible dans une nouvelle colonne appelée NOTIFICATION_CHANNEL, car ce tuyau a été créé en tant que tuyau d’attente automatique.

Étape 2 : Créer des événements de compartiments

  1. Dans AWS, naviguez jusqu’au compartiment correspondant de la nouvelle étape Snowflake. Ensuite, sous l’onglet Propriétés, allez dans Événements.

!onglet Propriétés AWS](/docs/fr/assets/img/aws-properties.png?842cf60a53909de8ce2e9978762fa540){: height=”50%” width=”50%”}

2. Créez de nouveaux événements pour chaque ensemble de données actuelles, selon les besoins(envoi de messages, comportement de l’utilisateur), ou les deux.

Création d’un nouvel événement dans AWS](/docs/fr/assets/img/aws-events.png?ecf244dc3e6f400bb857c64c3235b1a3){: height=”50%” width=”50%”}

3. Cochez la case appropriée pour les notifications de création d’objet, ainsi que l’ARN au bas du formulaire (à partir de la colonne du canal de notification dans Snowflake).

Configuration des tuyaux d’arrosage auto-ingest

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 suivants et les schémas déterminés dans notre documentation Currents pour les événements d’engagement ou 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 y chargera continuellement des données par le biais de champs spécifiques avec des types de données spécifiques. Par exemple, un user_id sera chargé sous forme de chaîne de caractères et appelé user_id dans les données de Currents.

  1. Créez une table INTO que nous chargerons continuellement en utilisant la structure suivante 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
    );

2. Créez le tuyau auto_ingest et spécifiez : 2.1. Quel tableau charger 2.2 Comment charger le tableau suivant

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/);
  1. Créez une table INTO que nous chargerons continuellement en utilisant la structure suivante 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
        );

2. Créez le tuyau de chargement continu AUTO et spécifiez-le : 2.1. Quel tableau charger 2.2 Comment charger le tableau suivant

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

Pour voir les types d’analyse/analytique que vous pouvez effectuer à l’aide de Braze Currents, consultez nos blocs Looker.

New Stuff!