Ingestão de dados na nuvem para Snowflake
Esta página reúne tudo o que você precisa para sincronizar dados do Snowflake com a Braze usando a Ingestão de Dados na Nuvem (CDI). Você vai ver quais recursos criar no Snowflake, como conectar a fonte e criar uma sincronização na Braze, qual é a tabela de origem para cada tipo de dado e como resolver problemas específicos do Snowflake.
Visão geral da configuração
- Na sua instância do Snowflake, configure as tabelas ou visualizações que deseja sincronizar com a Braze.
- Configure uma função e um warehouse para a Braze.
- Configure um usuário do Snowflake para a Braze com um dos métodos de autenticação compatíveis.
- Crie uma nova fonte do Snowflake no dashboard da Braze e conclua a autenticação no Snowflake.
- Crie uma sincronização no dashboard da Braze, valide a integração e inicie a sincronização.

O guia de início rápido do Snowflake traz código de exemplo e mostra as etapas necessárias para criar um pipeline automatizado usando Snowflake Streams e CDI para sincronizar dados com a Braze.
Etapa 1: Configure sua tabela de origem
As etapas desta seção criam uma tabela com uma coluna PAYLOAD. Se você planeja mapear colunas com Visual ou escrever uma consulta com SQL na etapa Definição de dados, pode usar uma tabela ou visualização existente. Nesse caso, pule a criação da tabela e conceda à Braze acesso de leitura às tabelas ou visualizações que deseja sincronizar. Para comparar as opções, consulte Escolha uma opção de definição de dados.
Você pode dar o nome que quiser ao banco de dados, ao esquema e à tabela, mas os nomes das colunas devem corresponder às definições nas guias a seguir. Também é possível usar uma visualização ou uma visualização materializada no lugar de uma tabela.

Se você usar uma coluna PAYLOAD, sua tabela ou visualização de origem pode incluir colunas que não estão listadas nas guias a seguir (por exemplo, de auditoria ou hashing). A Braze lê apenas as colunas descritas nessas guias. As demais colunas não são usadas durante as sincronizações da Ingestão de Dados na Nuvem.
Selecione a guia do tipo de dado que deseja sincronizar.
Atributos do usuário, eventos personalizados e eventos de compra usam o mesmo formato de tabela de origem. Apenas o conteúdo de PAYLOAD muda.
CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id, alias_name and alias_label, email, phone, or braze_id is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
--braze_id can only be used to update existing users created through the Braze SDK
BRAZE_ID VARCHAR(16777216),
--If you include both email and phone, email is used as the primary identifier
EMAIL VARCHAR(16777216),
PHONE VARCHAR(16777216),
PAYLOAD VARCHAR(16777216) NOT NULL
);
UPDATED_AT- O horário em que esta linha foi atualizada ou adicionada à tabela. A Braze sincroniza as linhas em queUPDATED_ATé posterior ao último valor sincronizado. Linhas com o carimbo de data/hora exatamente no limite podem ser sincronizadas novamente se novas linhas tiverem esse mesmo carimbo de data/hora.- Colunas de identificador de usuário - Sua tabela pode conter uma ou mais colunas de identificador de usuário. Cada linha deve conter apenas um identificador (
external_id, a combinação dealias_nameealias_label,braze_id,emailouphone). Uma tabela de origem pode ter colunas para um, dois, três, quatro ou todos os cinco tipos de identificador.EXTERNAL_ID- Identifica o usuário que você deseja atualizar. Deve corresponder ao valor deexternal_idusado na Braze.ALIAS_NAMEeALIAS_LABEL- Essas duas colunas criam um objeto de alias de usuário.alias_namedeve ser um identificador exclusivo, ealias_labelespecifica o tipo de alias. Os usuários podem ter vários aliases com rótulos diferentes, mas apenas umalias_nameporalias_label.BRAZE_ID- O identificador de usuário da Braze. Ele é gerado pelo SDK da Braze. Não é possível criar novos usuários usando um Braze ID por meio da ingestão de dados na nuvem. Para criar novos usuários, especifique um ID de usuário externo ou um alias de usuário.EMAIL- O endereço de e-mail do usuário. Se existirem vários perfis com o mesmo endereço de e-mail, o perfil atualizado mais recentemente terá prioridade nas atualizações. Se você incluir tanto o e-mail quanto o telefone, o e-mail será usado como identificador principal.PHONE- O número de telefone do usuário. Se existirem vários perfis com o mesmo número de telefone, o perfil atualizado mais recentemente terá prioridade nas atualizações.
PAYLOAD- É uma string JSON com os campos que você deseja sincronizar com o usuário na Braze.
Para sincronizações de atributos, PAYLOAD segue o formato do objeto de atributos do usuário. Você pode incluir atributos personalizados aninhados, arrays de objetos e status de grupos de inscrições. Para ver exemplos de carga útil, consulte Configuração da tabela.
Eventos personalizados usam a mesma tabela de origem dos atributos do usuário. Crie a tabela mostrada na guia Atributos do usuário e preencha PAYLOAD com um objeto de eventos.
Para sincronizar eventos, é necessário informar o nome do evento. Formate o campo time como uma string ISO 8601 ou no formato yyyy-MM-dd'T'HH:mm:ss:SSSZ. Se o campo time não estiver presente, a Braze usa o valor da coluna UPDATED_AT como horário do evento. Os demais campos, incluindo app_id e properties, são opcionais.
Você pode sincronizar um evento por linha.
{
"app_id" : "your-app-id",
"name" : "rented_movie",
"time" : "2013-07-16T19:20:45+01:00",
"properties": {
"movie": "The Sad Egg",
"director": "Alex Smith"
}
}
Eventos de compra usam a mesma tabela de origem dos atributos do usuário. Crie a tabela mostrada na guia Atributos do usuário e preencha PAYLOAD com um objeto de compras.
Para sincronizar eventos de compra, é necessário informar product_id, currency e price. Formate o campo opcional time como uma string ISO 8601 ou no formato yyyy-MM-dd'T'HH:mm:ss:SSSZ. Se o campo time não estiver presente, a Braze usa o valor da coluna UPDATED_AT como horário do evento. Os demais campos, incluindo app_id, quantity e properties, são opcionais.
Você pode sincronizar um evento de compra por linha.
{
"app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
"product_id" : "Completed Order",
"currency" : "USD",
"price" : 219.98,
"time" : "2013-07-16T19:20:30+01:00",
"properties" : {
"products" : [ { "name": "Monitor", "category": "Gaming", "product_amount": 19.99 },
{ "name": "Gaming Keyboard", "category": "Gaming ", "product_amount": 199.99 }
]
}
}
Antes de criar uma sincronização de catálogo, crie o catálogo de destino na Braze. Para ver o fluxo de trabalho completo de catálogos, consulte Sincronizar e excluir dados de catálogo.
CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--ID of the catalog item to be created or updated
ID VARCHAR(16777216) NOT NULL,
--Catalog fields and values that should be added or updated
PAYLOAD VARCHAR(16777216) NOT NULL,
--The catalog item associated with this ID should be deleted
DELETED BOOLEAN
);
Conceda à função da Braze acesso a esta tabela, junto com suas outras tabelas de origem:
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC TO ROLE BRAZE_INGESTION_ROLE;
O nome da integração deve ser exatamente igual ao nome do catálogo que você criou na Braze.
A Braze recomenda criar uma visualização a partir dos dados do seu catálogo, para que a tabela de origem seja totalmente atualizada a cada execução da sincronização. Por exemplo, se você tem uma tabela de dados de produtos (product_catalog_1) com product_id e três atributos adicionais, pode sincronizar a seguinte visualização:
CREATE VIEW BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
product_id as id,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
)as PAYLOAD FROM "product_catalog_1";
Os gatilhos do Canvas viabilizam a personalização zero-copy. Para ver a configuração do Canvas de destino e as considerações, consulte Personalização zero-copy.
CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id or alias_name and alias_label is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
PROPERTIES VARCHAR(16777216)
);
As sincronizações de disparo de Canvas diferem de outras sincronizações de dados de usuários de três maneiras:
- Só há suporte para os identificadores ID externo ou alias de usuário. E-mail e números de telefone não são identificadores compatíveis.
- Só é possível sincronizar usuários que já existem na Braze. Não é possível criar novos usuários.
PROPERTIESsubstitui a colunaPAYLOAD. Essa coluna é uma string JSON com os campos que você quer usar como propriedades de entrada no Canvas para personalização.
Sua tabela de disparos de Canvas precisa das seguintes colunas:
UPDATED_AT- O momento em que essa linha foi atualizada ou adicionada à tabela. A Braze sincroniza as linhas em queUPDATED_ATé posterior ao último valor sincronizado. As linhas com o timestamp exatamente no limite podem ser sincronizadas novamente se novas linhas tiverem esse mesmo timestamp.EXTERNAL_IDouALIAS_NAMEeALIAS_LABELcomo coluna de identificador de usuário. Essas colunas identificam os usuários para os quais você quer disparar o envio de mensagens do Canvas.EXTERNAL_ID- Identifica o usuário que vai entrar no Canvas. Esse valor deve corresponder ao valor deexternal_idusado na Braze.ALIAS_NAMEeALIAS_LABEL- Essas colunas criam um objeto de alias de usuário.alias_namedeve ser um identificador único, ealias_labelespecifica o tipo de alias. Os usuários podem ter vários aliases com rótulos diferentes, mas apenas umalias_nameporalias_label.
PROPERTIES- Uma string JSON com os campos que ficarão disponíveis como propriedades de personalização no seu Canvas. Ela deve conter informações específicas do usuário.

As propriedades não são obrigatórias para todas as linhas ou usuários. No entanto, os valores das propriedades precisam ser uma string JSON válida. Insira uma string vazia {} se não houver propriedades para a linha.
Conceda à função da Braze acesso a esta tabela:
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC TO ROLE BRAZE_INGESTION_ROLE;
Para começar, selecione o tipo de dado Gatilhos do Canvas ao criar uma nova sincronização.
As tabelas de origem para exclusões de usuários devem incluir um ou mais tipos de identificador de usuário e um carimbo de data/hora UPDATED_AT. Colunas de carga útil não são compatíveis com dados de exclusão de usuários.
UPDATED_AT- O momento em que esta linha foi atualizada ou adicionada à tabela. A Braze sincroniza as linhas em queUPDATED_ATé posterior ao último valor sincronizado. As linhas que estiverem exatamente no carimbo de data/hora limite podem ser sincronizadas novamente se novas linhas tiverem esse mesmo carimbo de data/hora.- Colunas de identificador de usuário - Cada linha deve conter apenas um identificador:
external_id, a combinação dealias_nameealias_label, oubraze_id. Uma tabela de origem pode conter colunas para um, dois ou todos os três tipos de identificador.EXTERNAL_ID- Identifica o usuário que você deseja atualizar. Deve corresponder ao valor deexternal_idusado na Braze.ALIAS_NAMEeALIAS_LABEL- Essas duas colunas criam um objeto de alias de usuário.alias_namedeve ser um identificador exclusivo, ealias_labelespecifica o tipo de alias. Os usuários podem ter vários aliases com rótulos diferentes, mas apenas umalias_nameporalias_label.BRAZE_ID- O identificador de usuário da Braze. Ele é gerado pelo SDK da Braze, e não é possível criar novos usuários usando um ID da Braze por meio da ingestão de dados na nuvem. Para criar novos usuários, especifique um ID de usuário externo ou um alias de usuário.

Não inclua uma coluna PAYLOAD na sua tabela para remoção de usuários. Para evitar a remoção acidental e permanente de usuários, a sincronização falha se uma coluna de carga útil for fornecida na tabela de origem. Quaisquer outras colunas são permitidas, mas são ignoradas pela Braze.
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_DELETES (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id, alias_name and alias_label, or braze_id is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
--braze_id can only be used to update existing users created through the Braze SDK
BRAZE_ID VARCHAR(16777216)
);
Na página Criar sincronização de importação, defina o Tipo de dados como Excluir usuários para que as ações corretas sejam executadas durante a execução da integração. Para saber mais, consulte Excluir usuários com a Ingestão de Dados na Nuvem.

A exclusão de perfis de usuário não pode ser desfeita. A ação de exclusão remove usuários permanentemente, o que pode causar discrepâncias nos seus dados. Para mais detalhes, consulte Efeitos da exclusão de perfis de usuário.
Etapa 2: Configure a função e o warehouse
Etapa 2.1: Configure a função e as permissões do banco de dados
CREATE ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON DATABASE BRAZE_CLOUD_PRODUCTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;
Atualize os nomes conforme necessário, mas as permissões devem corresponder ao exemplo anterior.
Etapa 2.2: Configure o warehouse e dê acesso à função da Braze
CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE;
GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE;

O warehouse precisa estar com a flag auto-resume ativada. Caso contrário, conceda à Braze privilégios adicionais de OPERATE no warehouse para que a Braze possa ativá-lo quando a consulta for executada.
Etapa 2.3: Permita os IPs da Braze na política de rede do Snowflake (opcional)
Dependendo da configuração da sua conta do Snowflake, talvez seja necessário permitir os seguintes endereços IP na política de rede do Snowflake. Para saber como fazer isso, consulte a documentação do Snowflake sobre como modificar uma política de rede.
Para as instâncias US-01, US-02, US-03, US-04, US-05, US-06, US-07, estes são os endereços IP relevantes:
23.21.118.19134.206.23.17350.16.249.952.4.160.21454.87.8.3454.156.35.25152.54.89.23818.205.178.15
Para a instância US-08, estes são os endereços IP relevantes:
52.151.246.5152.170.163.18240.76.166.15740.76.166.17040.76.166.16740.76.166.16140.76.166.15640.76.166.16640.76.166.16040.88.51.7452.154.67.1740.76.166.8040.76.166.8440.76.166.8540.76.166.8140.76.166.7140.76.166.14440.76.166.145
Para a instância US-10, estes são os endereços IP relevantes:
100.25.232.16435.168.86.17952.7.44.1173.92.153.1835.172.3.12950.19.162.19
Para as instâncias EU-01 e EU-02, estes são os endereços IP relevantes:
52.58.142.24252.29.193.12135.158.29.22818.157.135.973.123.166.463.64.27.363.65.88.253.68.144.1883.70.107.88
Para a instância AU-01, estes são os endereços IP relevantes:
13.210.1.14513.211.70.15913.238.45.5452.65.73.16754.153.242.23954.206.45.213
Para a instância ID-01, estes são os endereços IP relevantes:
108.136.157.246108.137.30.20716.78.128.7116.78.14.13416.78.162.20843.218.73.35
Para a instância JP-01, estes são os endereços IP relevantes:
13.159.155.21254.199.221.24113.192.23.1654.250.120.13918.181.114.2323.114.38.100
Para a instância KR-01, estes são os endereços IP relevantes:
43.200.215.452.79.67.17552.79.113.603.34.212.9254.116.134.2313.37.197.225
Etapa 3: Configure a autenticação
A Braze se conecta ao Snowflake como um usuário do Snowflake que tem a função da Etapa 2. Configure o usuário com um dos seguintes métodos de autenticação:
| Método | Como a Braze faz a autenticação | O que você insere na Braze |
|---|---|---|
| Key pair authentication | Braze generates an RSA key pair and connects as a Snowflake user that has the public key assigned. | Username and Role |
Key pair authentication
Com a autenticação por par de chaves, a Braze gera um par de chaves RSA quando você salva suas credenciais no dashboard da Braze. Você atribui a chave pública a um usuário do Snowflake que a Braze usa para se conectar.
Configure o usuário
Crie um usuário para a Braze e conceda a ele a função que você criou:
CREATE USER BRAZE_INGESTION_USER;
GRANT ROLE BRAZE_INGESTION_ROLE TO USER BRAZE_INGESTION_USER;

Ao conectar diferentes espaços de trabalho à mesma conta do Snowflake, você precisa criar um usuário exclusivo para cada espaço de trabalho da Braze em que estiver criando uma integração. Dentro de um espaço de trabalho, você pode reutilizar o mesmo usuário em várias integrações. No entanto, a criação da integração falha se um usuário da mesma conta do Snowflake for duplicado entre espaços de trabalho.
Adicione a chave pública ao usuário
Conclua esta etapa depois de inserir suas credenciais no dashboard da Braze e selecionar Salvar credenciais. A Braze gera o par de chaves e exibe a chave pública. Adicione a chave pública ao usuário que você criou para a Braze:
ALTER USER BRAZE_INGESTION_USER SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BA...';
Para atribuir a chave, é necessário ter acesso SECURITYADMIN ou superior no Snowflake. Para saber mais, consulte a documentação do Snowflake.
Para fazer a rotação das chaves, acesse Gerenciamento de acesso a dados em Ingestão de dados na nuvem e selecione Gerar nova chave para a conta. Depois, atribua a nova chave pública ao usuário. Se você reutilizar o mesmo usuário e a mesma função em várias integrações, não será necessário adicionar a chave pública novamente.
Etapa 4: Crie uma nova fonte no dashboard da Braze
No dashboard da Braze, acesse Configurações de dados > Ingestão de dados na nuvem > Fontes, selecione Adicionar fonte de dados e depois selecione Snowflake.
Etapa 4.1: Adicione as informações de conexão do Snowflake
Escolha um nome para sua fonte, insira suas credenciais e a configuração do Snowflake e avance para a próxima etapa. Selecione o método de autenticação que você configurou na Etapa 3 e insira as credenciais correspondentes:
- Key pair authentication: Username and Role
Antes de continuar, confirme o valor que você inseriu em Localizador de conta Snowflake.
No campo Localizador de conta Snowflake, insira o identificador da conta do Snowflake. Insira apenas o valor do identificador da conta, como myorganization-myaccount. Não inclua https://, .snowflakecomputing.com nem qualquer caminho.
Para encontrar o identificador da sua conta do Snowflake:
- No Snowsight, selecione o menu da sua conta.
- Selecione View account details.
- Copie o valor de Account identifier.
- Se você copiar de uma URL do Snowflake, use apenas o valor antes de
.snowflakecomputing.com.
Etapa 4.2: Conclua a autenticação no Snowflake
Depois de inserir suas credenciais e a configuração, selecione Salvar credenciais. Para autenticação por par de chaves, a Braze gera um par de chaves RSA e exibe a chave pública. Volte ao Snowflake e adicione a chave pública ao usuário que você criou para a Braze.
Etapa 5: Crie uma nova sincronização no dashboard da Braze
Acesse Configurações de dados > Ingestão de dados na nuvem > Sincronizações e selecione Criar sincronização de dados.
Configure os detalhes da sincronização e defina seus dados
Insira um nome para sua sincronização. Em seguida, selecione uma fonte ativa e um tipo de dado de sincronização. Depois, selecione Visual ou Tabela e insira sua tabela de origem, ou selecione SQL para escrever uma consulta SQL personalizada. Por fim, selecione Prévia e validação.
Quando a validação for concluída com sucesso, uma prévia dos dados será exibida. Selecione Próximo: Notificações para continuar. Se a validação falhar, uma mensagem de erro será exibida para ajudar a solucionar o problema.

Você precisa validar a sincronização com sucesso antes de avançar para as próximas etapas. Se precisar fechar a página de criação da sincronização, selecione Salvar como rascunho para manter o trabalho em andamento.
Adicionar preferências de notificação
Insira um ou mais e-mails de contato para receber notificações de erros de sincronização. A Braze usa essas informações de contato para enviar notificações sobre erros de integração, como a perda inesperada de acesso a uma tabela.
Os e-mails de contato recebem apenas notificações de erros globais ou no nível da sincronização, como tabelas ausentes, problemas de permissões e outros. Eles não recebem notificações de problemas no nível da linha. Os erros globais indicam problemas críticos na conexão que impedem a execução das sincronizações.
Esses problemas podem incluir:
- Problemas de conectividade
- Falta de recursos
- Problemas de permissões
- O nível do catálogo está sem espaço (somente sincronizações de catálogo)
Definir o cronograma
Por fim, configure a sincronização como não recorrente ou recorrente.
As sincronizações não recorrentes são executadas somente quando você seleciona Sincronizar agora no dashboard ou chama o endpoint Disparar uma sincronização.
As sincronizações recorrentes podem ser executadas com frequência de até uma vez a cada 5 minutos ou com intervalo de até uma vez por mês. Por padrão, o intervalo mais curto que você pode definir no dashboard é de 15 minutos. Isso ajuda a gerenciar os custos de computação e o volume de solicitações do seu data warehouse. Para sincronizar a cada 5 minutos, entre em contato com o suporte da Braze ou com seu gerente de sucesso do cliente. A Braze agenda as sincronizações recorrentes em UTC.

Você precisa validar uma integração com sucesso antes que ela passe do estado Rascunho para Ativo. Se você fechar a página de criação, sua integração será salva, e você poderá voltar à página de detalhes para fazer alterações e validar.
Execute a sincronização
Depois de ativada, sua sincronização é executada de acordo com o cronograma definido durante a configuração. Se quiser executar a sincronização fora do cronograma ou buscar os dados mais recentes, selecione Sincronizar agora. Essa execução não afeta as próximas sincronizações agendadas. Para iniciar uma sincronização automaticamente quando seus dados forem atualizados, chame o endpoint Disparar uma sincronização a partir do seu pipeline.
Configure integrações ou usuários adicionais (opcional)
Você pode configurar várias integrações com a Braze. Ao criar sincronizações adicionais, você pode reutilizar credenciais existentes se estiver se conectando à mesma conta do Snowflake.
Se você reutilizar o mesmo usuário e a mesma função em várias integrações, não precisa adicionar a chave pública novamente.
Use o Snowflake como fonte conectada
Uma fonte conectada é uma alternativa zero-copy à sincronização de dados com a Braze. A Braze consulta sua instância do Snowflake diretamente para criar segmentos CDI, sem copiar os dados subjacentes. Para conhecer os conceitos, as limitações e as implicações de custo, consulte Fontes conectadas.
Etapa 1: Crie uma função e conceda permissões
Crie uma função para sua fonte conectada usar. Essa função é usada para gerar a lista de tabelas disponíveis nas suas extensões de segmento CDI e para consultar as tabelas de origem ao criar novos segmentos. Depois que a fonte conectada é criada, a Braze descobre os nomes e a descrição de todas as tabelas disponíveis para o usuário no esquema de origem.
Você pode conceder acesso a todas as tabelas de um esquema ou conceder privilégios apenas a tabelas específicas. Todas as tabelas às quais a função da Braze tiver acesso ficam disponíveis para consulta na extensão de segmento CDI.
A permissão create table é necessária para que a Braze possa criar uma tabela com os resultados da consulta da sua extensão de segmento CDI antes de atualizar o segmento na Braze. A Braze cria uma tabela temporária por segmento, e essa tabela só existe enquanto a Braze está atualizando o segmento.
CREATE ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON DATABASE BRAZE_CLOUD_PRODUCTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT CREATE TABLE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
-- grant access to all current and future tables or views in the schema
GRANT SELECT ON ALL TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
-- grant access to specific tables or views in the schema
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;
A configuração do warehouse é a mesma da Etapa 2.2, e a configuração da política de rede é a mesma da Etapa 2.3. Configure o usuário com o qual a Braze se conecta usando um dos métodos da Etapa 3: Configure a autenticação.
Etapa 2: Crie a fonte conectada na Braze
Acesse Configurações de dados > Ingestão de dados na nuvem > Fontes conectadas, selecione Adicionar fonte de dados e depois selecione Snowflake.
Em Configurar fonte, insira o seguinte:
- Credenciais: Localizador de conta e os campos do seu método de autenticação. Insira Username and Role.
- Configuração: Warehouse, Banco de dados e Esquema
Para autenticação por par de chaves, se você estiver criando novas credenciais do Snowflake, selecione Salvar credenciais e gerar chave RSA antes de testar a conexão.
Escolha um nome para a fonte conectada. Esse nome aparece na lista de fontes disponíveis quando você cria uma nova extensão de segmento CDI.
Configure um tempo máximo de execução para essa fonte. A Braze interrompe automaticamente todas as consultas que excederem o tempo máximo de execução. O tempo máximo permitido é de 60 minutos. Um tempo menor reduz os custos na sua conta do Snowflake. Essa configuração se aplica às consultas executadas por meio dessa fonte, incluindo sincronizações e extensões de segmento CDI que a utilizam.
Para autenticação por par de chaves, anote a chave pública RSA na etapa Testar conexão. Você vai precisar dela para concluir a integração no Snowflake.
Etapa 3: Finalize a configuração do Snowflake
Para autenticação por par de chaves, adicione a chave pública que você anotou na etapa anterior ao seu usuário no Snowflake, conforme descrito em Adicione a chave pública ao usuário. Isso permite que a Braze se conecte ao Snowflake.
Depois de concluir a autenticação no Snowflake, selecione Testar conexão na Braze e depois selecione Concluído. Sua fonte conectada está criada e pronta para uso nas extensões de segmento CDI.
Você pode configurar várias fontes conectadas com a Braze, mas cada fonte deve se conectar a um esquema diferente. Ao criar conexões adicionais, você pode reutilizar credenciais existentes se estiver se conectando à mesma conta do Snowflake. Se você reutilizar o mesmo usuário e a mesma função em várias integrações, não precisa adicionar a chave pública novamente.
Formate uma carga útil a partir de colunas existentes
Se você prefere armazenar cada atributo em uma coluna própria internamente, precisa converter essas colunas em uma string JSON para preencher a sincronização com a Braze. Use esta consulta no Snowflake para formatar as colunas de origem em campos da CDI.
CREATE TABLE "EXAMPLE_USER_DATA"
(attribute_1 string,
attribute_2 string,
attribute_3 number,
my_user_id string);
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
my_user_id as EXTERNAL_ID,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'yet_another_attribute',
attribute_3)
)as PAYLOAD FROM "EXAMPLE_USER_DATA";
Para remover um atributo por completo em vez de defini-lo como null, use TO_JSON(OBJECT_CONSTRUCT_KEEP_NULL(...)).
Para mais orientações de otimização, consulte Práticas recomendadas da Ingestão de Dados na Nuvem.
Solução de problemas
O teste de conexão está lento
O teste de conexão é executado no seu data warehouse, então aumentar a capacidade do warehouse pode melhorar a velocidade. Usar uma instância SQL serverless minimiza o tempo de aquecimento e melhora o throughput das consultas, mas pode gerar custos de integração um pouco maiores.
Erro ao conectar à instância do Snowflake: Incoming request with IP is not allowed to access Snowflake
Tente adicionar os IPs oficiais da Braze à sua lista de IPs permitidos. Para saber mais, consulte Permita os IPs da Braze na política de rede do Snowflake.
Erro ao executar SQL devido à configuração do cliente: 002003 (42S02): SQL compilation error: does not exist or not authorized
Se a tabela não existir, crie-a. Se a tabela existir, verifique se o usuário e a função têm permissão para ler a tabela.
Não foi possível usar o esquema
Se você receber esse erro, conceda acesso a esse esquema para o usuário ou a função especificada.
Não foi possível usar a função
Se você receber esse erro, permita que esse usuário use a função especificada.
Acesso do usuário desativado
Se você receber esse erro, permita que esse usuário acesse sua conta do Snowflake.
Erro ao conectar à instância do Snowflake com a chave atual e a antiga
Se você receber esse erro, verifique se o usuário está usando a chave pública atual, conforme exibida no seu dashboard da Braze. Para fazer a rotação de chaves, consulte Adicione a chave pública ao usuário.
Onde executar verificações SQL
Execute as verificações de validação diretamente no editor SQL do Snowflake, na mesma tabela ou visualização usada pela sua integração de CDI. Acesse Projects > Worksheets. Para saber mais, consulte Snowflake Worksheets.
Páginas relacionadas
- Configuração da tabela para colunas obrigatórias e formatação da carga útil
- Melhores práticas para agendamento de sincronizações e eficiência no uso de pontos de dados
- Logs de sincronização e observabilidade para monitorar as execuções de sincronização
- Perguntas frequentes para dúvidas comuns sobre todas as fontes