Skip to content

Transferir dados do Amazon S3 para o Snowflake

Se seus dados estiverem atualmente no Amazon S3, você poderá transferi-los para o Snowflake ou outro data warehouse relacional usando o processo ELT (Extract, Load, Transform). Esta página explica como fazer isso.

Como funciona?

O processo Extract, Load, Transform (ELT) é um processo automatizado que move os dados para o Snowflake, o que lhe permitirá usar os blocos do Looker da Braze para visualizar esses dados no Looker e ajudar a gerar insights e feedback em suas campanhas, Canvas e segmentos.

Depois de configurar uma exportação do Currents para o S3 e de receber dados de eventos ao vivo, você poderá configurar seu pipeline ELT ao vivo no Snowflake configurando os seguintes componentes:

Configuração das filas do AWS SQS

Os Snowpipes de ingestão automática dependem de filas SQS para enviar notificações do S3 para o Snowpipe. Esse processo é gerenciado pelo Snowflake após a configuração do SQS.

Etapa 1: Configurar o stage externo do S3

  1. Ao configurar o Currents na Braze, especifique um caminho de pasta para que seus arquivos do Currents sigam para o seu bucket S3. Aqui usamos currents, o caminho de pasta padrão.

  2. Crie os seguintes itens na ordem listada: 2.1 Na AWS, crie um novo par de chaves pública-privada para o bucket S3 desejado, com permissões de acordo com os requisitos de segurança da sua organização. 2.2. No Snowflake, crie um banco de dados e um esquema de sua escolha (nomeados currents e public no exemplo a seguir). 2.3. Crie um stage S3 do Snowflake (chamado 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. Defina o formato de arquivo AVRO para o seu 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 fim, use o comando show pipes; para exibir as informações do SQS. O nome da fila SQS ficará visível em uma nova coluna chamada NOTIFICATION_CHANNEL, pois esse pipe foi criado como um pipe de ingestão automática.

Etapa 2: Criar eventos de bucket

  1. Na AWS, navegue até o bucket correspondente ao novo stage do Snowflake. Em seguida, na guia Properties, acesse Events.

Guia Properties da AWS

  1. Crie novos eventos para cada conjunto de dados do Currents, conforme necessário (Envio de mensagens, Comportamento do usuário), ou ambos.

Criando um novo evento na AWS

  1. Marque a caixa apropriada para as notificações de criação de objeto, bem como o ARN na parte inferior do formulário (da coluna de canal de notificação no Snowflake).

Configuração dos Snowpipes de ingestão automática

Para que a configuração do AWS SQS produza as tabelas corretas, você deve definir a estrutura dos dados recebidos corretamente usando os exemplos e esquemas a seguir, determinados em nossa documentação do Currents para Eventos de engajamento com mensagem ou eventos de envio de mensagens, Eventos de comportamento do usuário ou cliente, ou ambos.

É fundamental estruturar suas tabelas de acordo com os esquemas do Braze Currents, pois o Braze Currents carregará dados continuamente nelas por meio de campos específicos com tipos de dados específicos. Por exemplo, um user_id será carregado como uma string e chamado de user_id nos dados do Currents.

  1. Crie uma tabela INTO na qual carregaremos dados continuamente usando a seguinte estrutura do esquema do 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. Crie o pipe auto_ingest e especifique: 2.1. Qual tabela carregar 2.2 Como carregar a tabela a seguir
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. Crie uma tabela INTO na qual carregaremos dados continuamente usando a seguinte estrutura do esquema do 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. Crie o pipe de carregamento contínuo AUTO e especifique: 2.1. Qual tabela carregar 2.2 Como carregar a tabela a seguir
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 os tipos de análise de dados que você pode realizar usando o Braze Currents, consulte nossos blocos do Looker.

New Stuff!