Skip to content

Transfiere datos de Amazon S3 a Snowflake

Si tus datos se encuentran actualmente en Amazon S3, puedes transferirlos a Snowflake o a otro almacén de datos relacional mediante el proceso Extraer, Cargar, Transformar (ELT). Esta página explica cómo hacerlo.

Cómo funciona

El proceso Extraer, Cargar, Transformar (ELT) es un proceso automatizado que traslada los datos a Snowflake, lo que te permitirá utilizar los bloques de Looker de Braze para visualizar esos datos en Looker y ayudarte a obtener información y comentarios sobre tus campañas, Canvas y segmentos.

Una vez que hayas configurado una exportación de Currents a S3 y estés recibiendo datos de eventos en directo, puedes configurar tu canalización de ELT en directo en Snowflake configurando los siguientes componentes:

Configuración de las colas de AWS SQS

Los Snowpipes Auto-ingest dependen de las colas SQS para el envío de notificaciones desde S3 a Snowpipe. Este proceso es gestionado por Snowflake después de configurar SQS.

Paso 1: Configura el stage externo de S3

  1. Cuando configures Currents en Braze, especifica una ruta de carpeta para que tus archivos de Currents sigan hacia tu contenedor de S3. Aquí usamos currents, la ruta de carpeta predeterminada.

  2. Crea lo siguiente en el orden indicado: 2.1 En AWS, crea un nuevo par de claves pública-privada para el contenedor de S3 deseado, con permisos de acuerdo con los requisitos de seguridad de tu organización. 2.2. En Snowflake, crea una base de datos y un esquema de tu elección (llamados currents y public en el siguiente ejemplo). 2.3. Crea un stage de Snowflake S3 (llamado 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;
  1. Define el formato de archivo AVRO para tu 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/);
  1. Por último, usa el comando show pipes; para mostrar la información de SQS. El nombre de la cola SQS será visible en una nueva columna llamada NOTIFICATION_CHANNEL porque este pipe se creó como un pipe de auto-ingest.

Paso 2: Crea eventos de contenedor

  1. En AWS, navega al contenedor correspondiente del nuevo stage de Snowflake. Luego, en la pestaña Properties, ve a Events.

Pestaña Properties de AWS

  1. Crea nuevos eventos para cada conjunto de datos de Currents, según sea necesario (mensajería, comportamiento del usuario), o ambos.

Creación de un nuevo evento en AWS

  1. Marca la casilla correspondiente para las notificaciones de creación de objetos, así como el ARN en la parte inferior del formulario (de la columna del canal de notificación en Snowflake).

Configuración de Snowpipes Auto-ingest

Para que la configuración de AWS SQS produzca las tablas correctas, debes definir correctamente la estructura de los datos entrantes utilizando los siguientes ejemplos y esquemas determinados en nuestra documentación de Currents para eventos de interacción con mensajes o eventos de mensajería, eventos de comportamiento del usuario o del cliente, o ambos.

Es fundamental que estructures tus tablas de acuerdo con los esquemas de Braze Currents, ya que Braze Currents cargará datos continuamente en ellas a través de campos específicos con tipos de datos específicos. Por ejemplo, un user_id se cargará como una cadena y se llamará user_id en los datos de Currents.

  1. Crea una tabla INTO en la que cargaremos datos continuamente utilizando la siguiente estructura del esquema de 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
    );
  1. Crea el pipe auto_ingest y especifica: 2.1. Qué tabla cargar 2.2 Cómo cargar la siguiente tabla
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. Crea una tabla INTO en la que cargaremos datos continuamente utilizando la siguiente estructura del esquema de 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
        );
  1. Crea el pipe de carga continua AUTO y especifica: 2.1. Qué tabla cargar 2.2 Cómo cargar la siguiente tabla
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/);

Para ver los tipos de análisis que puedes realizar con Braze Currents, consulta nuestros bloques de Looker.

New Stuff!