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.
Se tiver casos de uso mais específicos e quiser que a Braze faça a manutenção da sua instância do Currents, entre em contato com o gerente da sua conta Braze e pergunte sobre o Braze Data Professional Services.
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
As tabelas no seu banco de dados são criadas nesta etapa.
-
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. -
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
currentsepublicno exemplo a seguir). 2.3. Crie um stage S3 do Snowflake (chamadobraze_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;
- 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/);
- 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 chamadaNOTIFICATION_CHANNEL, pois esse pipe foi criado como um pipe de ingestão automática.
Etapa 2: Criar eventos de bucket
- Na AWS, navegue até o bucket correspondente ao novo stage do Snowflake. Em seguida, na guia Properties, acesse Events.

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

- 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.
Dependendo da sua integração com o Currents, você pode ter diferentes eventos que precisam ser configurados (como Eventos de engajamento com mensagem ou eventos de envio de mensagens e Eventos de comportamento do usuário ou cliente). Você também pode escrever um script para parte ou todo esse processo.
- Crie uma tabela
INTOna 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
);
- Crie o pipe
auto_ingeste 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/);
Você deve repetir os comandos CREATE TABLE e CREATE PIPE para cada tipo de evento.
- Crie uma tabela
INTOna 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
);
- 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/);
Você deve repetir os comandos CREATE TABLE e CREATE PIPE para cada tipo de evento.
Para ver os tipos de análise de dados que você pode realizar usando o Braze Currents, consulte nossos blocos do Looker.
Entre em contato com o gerente da sua conta Braze se tiver alguma dúvida ou se estiver interessado em ter a orientação da Braze nesse processo.