Sincronize os dados da conta usando CDI
Aprenda como sincronizar os dados da sua conta da Braze usando CDI.
Objetos de conta estão em beta e são necessários para usar este recurso. Entre em contato com o gerente da sua conta da Braze se estiver interessado em participar da versão beta.
Pré-requisitos
Antes de sincronizar os dados da sua conta usando CDI, você precisará configurar o esquema das suas contas.
Faça atualizações no seu esquema de conta apenas quando a sincronização estiver pausada ou não agendada para evitar conflitos entre os dados do seu data warehouse e o esquema na Braze.
Como a sincronização funciona
- Cada sincronização importa linhas onde
UPDATED_ATé posterior ao último timestamp sincronizado. Linhas no timestamp exato do limite podem ser ressincronizadas se novas linhas compartilharem o mesmo timestamp. Para saber mais, consulte Evitar ressincronização de linhas com timestamps duplicados. - Os dados da integração criam ou atualizam contas com base no
idfornecido. - Se
DELETEDfortrue, a conta é excluída. - A sincronização não registra pontos de dados, mas todos os dados sincronizados contam para o uso total das suas contas, medido pelo total de dados armazenados — não há necessidade de limitar apenas aos dados alterados.
- Campos que não estão no seu esquema de contas são descartados; atualize o esquema antes de sincronizar novos campos.
- Você pode atualizar, retomar ou pausar uma sincronização passando o mouse sobre o nome da sincronização e selecionando a ação relevante.
Sincronize os dados da sua conta
Você pode sincronizar os dados da sua conta usando CDI por meio de um data warehouse ou um armazenamento de arquivos.
Para integrar sua fonte de dados com seu data warehouse:
- Crie uma tabela de origem no Snowflake. Use os nomes do exemplo ou escolha seus próprios nomes de banco de dados, esquema e tabela. Você também pode usar uma view ou view materializada em vez de uma tabela.
1 2 3 4 5 6 7 8 9 10 11 12 13
CREATE DATABASE BRAZE_CLOUD_PRODUCTION; CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION; CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC ( UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(), --ID of the account to be created or updated ID VARCHAR(16777216) NOT NULL, --Name of the account to be created or updated NAME VARCHAR(16777216) NOT NULL, --Account fields and values that should be added or updated PAYLOAD VARCHAR(16777216) NOT NULL, --The account associated with this ID should be deleted DELETED BOOLEAN );
- Crie uma role, warehouse e usuário, e conceda permissões. Se você já tiver credenciais de outra sincronização, pode reutilizá-las — certifique-se de que elas tenham acesso à tabela de contas.
1 2 3 4 5 6 7 8 9 10 11
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.ACCOUNTS_SYNC TO ROLE BRAZE_INGESTION_ROLE; CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE; GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE; CREATE USER BRAZE_INGESTION_USER; GRANT ROLE BRAZE_INGESTION_ROLE TO USER BRAZE_INGESTION_USER;
- Se você usa políticas de rede, adicione os IPs da Braze à lista de permissões para que o serviço CDI possa se conectar. Para a lista de IPs, consulte Cloud Data Ingestion.
- No dashboard da Braze, acesse Data Settings > Cloud Data Ingestion e crie uma nova sincronização.
- Insira os detalhes da conexão (ou reutilize os existentes) e adicione a tabela de origem.
- Selecione o tipo de sincronização Accounts e insira o nome da integração e o agendamento.
- Escolha a frequência de sincronização.
- Adicione a chave pública do dashboard ao usuário que você criou. Isso requer um usuário com acesso
SECURITYADMINou superior no Snowflake. - Selecione Test Connection para confirmar a configuração.
- Quando terminar, salve a sincronização.
- Crie uma tabela de origem no Redshift. Use os nomes do exemplo ou escolha seus próprios nomes de banco de dados, esquema e tabela. Você também pode usar uma view ou view materializada em vez de uma tabela.
1 2 3 4 5 6 7 8 9 10 11 12 13
CREATE DATABASE BRAZE_CLOUD_PRODUCTION; CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION; CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC ( updated_at timestamptz default sysdate not null, --ID of the account to be created or updated id varchar not null, --Name of the account to be created or updated name varchar not null, --Account fields and values that should be added or updated payload varchar(max), --The account associated with this ID should be deleted deleted boolean )
-
Crie um usuário e conceda permissões. Se você já tiver credenciais de outra sincronização, pode reutilizá-las — certifique-se de que elas tenham acesso à tabela de contas.
1 2 3
CREATE USER braze_user PASSWORD '{password}'; GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user; GRANT SELECT ON TABLE ACCOUNTS_SYNC TO braze_user;
- Se você tem um firewall ou políticas de rede, permita o acesso da Braze à sua instância do Redshift. Para a lista de IPs, consulte Cloud Data Ingestion.
- (Opcional) Crie um novo projeto ou dataset para sua tabela de origem.
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
- Crie a tabela de origem para sua integração CDI:
1 2 3 4 5 6 7 8
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.ACCOUNTS_SYNC` ( updated_at TIMESTAMP DEFAULT current_timestamp, id STRING, name STRING, payload JSON, deleted BOOLEAN );
Consulte a tabela a seguir ao criar sua tabela de origem:
Nome do campo Tipo Obrigatório? UPDATED_ATTimestamp Sim PAYLOADJSON Sim IDString Sim NAMEString Sim DELETEDBooleano Opcional
-
Crie um usuário e conceda permissões. Se você já tiver credenciais de outra sincronização, pode reutilizá-las desde que tenham acesso à tabela de contas.
Permissão Finalidade BigQuery Connection User Permite que a Braze se conecte. BigQuery User Permite que a Braze execute consultas, leia metadados e liste tabelas. BigQuery Data Viewer Permite que a Braze visualize datasets e conteúdos. BigQuery Job User Permite que a Braze execute jobs. Após conceder as permissões, gere uma chave JSON. Consulte Criar e excluir chaves para instruções. Você fará o upload dela no dashboard da Braze posteriormente.
- Se você usa políticas de rede, permita que os IPs da Braze acessem sua instância do BigQuery. Para a lista de IPs, consulte Cloud Data Ingestion.
- Crie um catálogo ou esquema para sua tabela de origem.
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
- Crie a tabela de origem para sua integração CDI:
1 2 3 4 5 6 7 8
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.ACCOUNTS_SYNC` ( updated_at TIMESTAMP DEFAULT current_timestamp(), id STRING, name STRING, payload STRING, STRUCT, or MAP, deleted BOOLEAN );
Consulte a tabela a seguir ao criar sua tabela de origem:
Nome do campo Tipo Obrigatório? UPDATED_ATTimestamp Sim PAYLOADString, Struct ou Map Sim IDString Sim NAMEString Sim DELETEDBooleano Opcional
- Crie um token de acesso pessoal no Databricks:
- Selecione seu nome de usuário e depois selecione User Settings.
- Na guia Access tokens, selecione Generate new token.
- Adicione um comentário para identificar o token, como “Braze CDI”.
- Deixe Lifetime (days) em branco para não expirar e selecione Generate.
- Copie e salve o token de forma segura para uso no dashboard da Braze.
- Se você usa políticas de rede, permita que os IPs da Braze acessem sua instância do Databricks. Para a lista de IPs, consulte Cloud Data Ingestion.
- Crie uma ou mais tabelas para sua integração CDI com estes campos:
1 2 3 4 5 6 7 8 9
CREATE OR ALTER TABLE [warehouse].[schema].[CDI_table_name] ( UPDATED_AT DATETIME2(6) NOT NULL, PAYLOAD VARCHAR NOT NULL, ID VARCHAR NOT NULL, NAME VARCHAR NOT NULL, DELETED BIT ) GO
- Crie um service principal e conceda permissões. Se você já tiver credenciais de outra sincronização, pode reutilizá-las — certifique-se de que elas tenham acesso à tabela de contas.
- Se você usa políticas de rede, permita que os IPs da Braze acessem sua instância do Microsoft Fabric. Para a lista de IPs, consulte Cloud Data Ingestion.
Para sincronizar dados de conta a partir de armazenamento de arquivos, crie um arquivo de origem com os seguintes campos.
| Campo | Obrigatório? | Descrição |
|---|---|---|
ID |
Sim | ID da conta a ser atualizada ou criada |
NAME |
Sim | Nome da conta |
PAYLOAD |
Sim | String JSON dos campos a serem sincronizados com a conta na Braze |
DELETED |
Opcional | Booleano indicando a exclusão da conta na Braze |
UPDATED_AT |
*Não suportado | O armazenamento de arquivos não suporta colunas UPDATED_AT |
Os nomes dos arquivos devem seguir as regras da AWS e ser únicos. Adicione timestamps para ajudar a garantir a unicidade. Para saber mais sobre sincronização com Amazon S3, consulte Integrações de armazenamento de arquivos.
Os exemplos a seguir mostram formatos JSON e CSV válidos para sincronizar dados de conta a partir de armazenamento de arquivos.
{"id":"s3-qa-0","name":"account0","payload":"{\"attribute_0\": \"GT896\", \"attribute_1\": 74, \"attribute_2\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}"}
{"id":"s3-qa-1","name":"account1","payload":"{\"attribute_0\": \"GT896\", \"attribute_1\": 74, \"attribute_2\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}","deleted":true}
{"id":"s3-qa-2","name":"account2","payload":"{\"attribute_0\": \"GT896\", \"attribute_1\": 74, \"attribute_2\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}","deleted":false}
{"id":"s3-qa-3","name":"account3","payload":"{\"attribute_0\": \"GT896\", \"attribute_1\": 74, \"attribute_2\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}"}
Cada linha no seu arquivo de origem deve conter JSON válido ou o arquivo será ignorado.
1
2
3
ID,NAME,PAYLOAD,DELETED
85,"ACCOUNT_1","{""region"": ""APAC"", ""employees"": 850}",TRUE
1,"ACCOUNT_2","{""region"": ""EMEA"", ""employees"": 10000}",FALSE
1
2
3
ID,NAME,PAYLOAD
85,"ACCOUNT_1","{""region"": ""APAC"", ""employees"": 850}"
1,"ACCOUNT_2","{""region"": ""EMEA"", ""employees"": 10000}"
Crie uma view de sincronização
Criar uma view de sincronização no seu data warehouse permite que a origem seja atualizada automaticamente sem precisar reescrever consultas adicionais.
Por exemplo, se você tiver uma tabela de dados de conta chamada account_details_1 com account_id, account_name e três atributos adicionais, você poderia criar uma view de sincronização como a seguinte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE VIEW BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
account_id as id,
account_name as name,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
)as PAYLOAD FROM "account_details_1";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
account_id as id,
account_name as name,
JSON_SERIALIZE(
OBJECT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
) as PAYLOAD FROM "account_details_1";
1
2
3
4
5
6
7
8
9
10
11
12
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC AS (SELECT
last_updated as UPDATED_AT,
account_id as ID,
account_name as NAME,
TO_JSON(
STRUCT(
attribute_1,
attribute_2,
attribute_3,
)
) as PAYLOAD
FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.account_details_1`);
1
2
3
4
5
6
7
8
9
10
11
12
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC AS (SELECT
last_updated as UPDATED_AT,
account_id as ID,
account_name as NAME,
TO_JSON(
STRUCT(
attribute_1,
attribute_2,
attribute_3,
)
) as PAYLOAD
FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.account_details_1`);
1
2
3
4
5
6
7
8
CREATE VIEW [BRAZE_CLOUD_PRODUCTION].[INGESTION].[ACCOUNTS_SYNC]
AS SELECT
account_id as ID,
account_name as NAME,
CURRENT_TIMESTAMP as UPDATED_AT,
JSON_OBJECT('attribute_1':attribute_1, 'attribute_2':attribute_2, 'attribute_3':attribute_3, 'attribute_4':attribute_4) as PAYLOAD
FROM [braze].[account_details_1] ;
Editar esta página no GitHub