Skip to content

Sincronizar e excluir dados do catálogo

Antes de criar uma nova integração de Ingestão de Dados em Nuvem (CDI) para catálogos, você precisará criar um novo catálogo ou identificar um catálogo existente que deseja usar para a integração. Existem algumas maneiras de criar um novo catálogo e qualquer uma delas funcionará para a integração CDI:

Quaisquer alterações no esquema do catálogo (por exemplo, adicionar novos campos ou alterar o tipo de campo) devem ser feitas através do dashboard do catálogo antes que os dados atualizados sejam sincronizados através do CDI. Recomendamos fazer essas atualizações quando a sincronização estiver pausada ou não programada para ser executada para evitar conflitos entre os dados do seu data warehouse e o esquema no Braze.

A configuração para uma sincronização de catálogo segue de perto o processo para integrações CDI de dados do usuário.

  1. Configure uma tabela de origem no Snowflake. Você pode usar os nomes no exemplo a seguir ou escolher seus próprios nomes de banco de dados, esquema e tabela. Você também pode usar uma visão ou uma visão materializada em vez de uma tabela.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     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
     );
    
  2. Set up a role, warehouse, and user and grant proper permissions. If you already have credentials from an existing sync, you can reuse them, just make sure to extend access to the catalog source table.
    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.CATALOGS_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;
    
  3. If your Snowflake account has network policies, allowlist the Braze IPs so the CDI service can connect. For a list of IPs, see the Cloud Data Ingestion.
  4. In the Braze dashboard, navigate to Technology Partners > Snowflake, and create a new sync.
  5. Enter connection details (or reuse existing credentials) and the source table.
  6. Proceed to step 2 of the setup flow, select the “Catalogs” sync type, and input the integration name and schedule. Note that the name of the integration should exactly match the name of the catalog you previously created.
  7. Choose a sync frequency and proceed to the next step.
  8. Add the public key displayed on the dashboard to the user you created for Braze to connect to Snowflake. To complete this step, you will need someone with SECURITYADMIN access or higher in Snowflake.
  9. Click Test Connection to ensure everything works as expected.
  10. Save the sync, and use the synced catalog data for all your personalization use cases.
  1. Set up a source table in Redshift. You can use the names in the following example or choose your own database, schema, and table names. You may also use a view or a materialized view instead of a table.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
     CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
     CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC (
        updated_at timestamptz default sysdate not null,
        --ID of the catalog item to be created or updated
        id varchar not null,
        --Catalog fields and values that should be added or updated
        payload varchar(max),
        --The catalog item associated with this ID should be deleted
        deleted boolean
     )
    
  2. Set up a user and grant proper permissions. If you already have credentials from an existing sync, you can reuse them, just make sure to extend access to the catalog source table.

    1
    2
    3
    
     CREATE USER braze_user PASSWORD '{password}';
     GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user;
     GRANT SELECT ON TABLE CATALOGS_SYNC TO braze_user;
    
  3. If you have a firewall or other network policies, you must give Braze network access to your Redshift instance. Allow access from the below IPs corresponding to your Braze dashboard’s region. For a list of IPs, see the Cloud Data Ingestion.
  1. Optionally, set up a new project or dataset to hold your source table.
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;

Crie uma ou mais tabelas para usar na sua integração CDI com os seguintes campos:

1
2
3
4
5
6
7
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CATALOGS_SYNC`
(
  updated_at TIMESTAMP DEFAULT current_timestamp,
  id STRING,
  payload JSON,
  deleted BOOLEAN
);
NOME DO CAMPO TIPO MODO
UPDATED_AT TIMESTAMP OBRIGATÓRIO
PAYLOAD JSON OBRIGATÓRIO
ID STRING OBRIGATÓRIO
DELETED BOOLEAN OPCIONAL
  1. Configurar um usuário e conceder as permissões adequadas. Se você já possui credenciais de uma sincronização existente, pode reutilizá-las—apenas certifique-se de estender o acesso à tabela de origem do catálogo. A conta de serviço deve ter as permissões abaixo:
    • Usuário de conexão do BigQuery: Isso permitirá que a Braze faça conexões.
    • Usuário do BigQuery: Isso fornecerá acesso à Braze para executar consultas, ler metadados do conjunto de dados e listar tabelas.
    • Visualizador de dados do BigQuery: Isso fornecerá acesso à Braze para visualizar conjuntos de dados e seus conteúdos.
    • Usuário do BigQuery Job: Isso fornecerá acesso ao Braze para executar trabalhos

      Depois de criar a conta de serviço e conceder permissões, gere uma chave JSON. Para saber mais, consulte Criar e excluir chaves. Você atualizará isso no dashboard do Braze mais tarde.

3. Se você tiver políticas de rede em vigor, deve conceder acesso à rede da Braze à sua instância do BigQuery. Para uma lista de IPs, consulte a Ingestão de Dados na Nuvem.

  1. Configurar uma tabela de origem no Databricks. Você pode usar os nomes no exemplo a seguir ou escolher seu catálogo, esquema e nomes de tabelas. Você também pode usar uma visão ou uma visão materializada em vez de uma tabela.
1
CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;
1
2
3
4
5
6
7
CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CATALOGS_SYNC`
(
  updated_at TIMESTAMP DEFAULT current_timestamp(),
  id STRING,
  deleted BOOLEAN,
  payload STRING
);
NOME DO CAMPO TIPO MODO
UPDATED_AT TIMESTAMP OBRIGATÓRIO
PAYLOAD JSON OBRIGATÓRIO
ID STRING OBRIGATÓRIO
DELETED BOOLEAN NULLABLE
  1. Crie um token de acesso pessoal no seu espaço de trabalho do Databricks.
  • a. Selecione seu nome de usuário do Databricks e, em seguida, selecione Configurações do usuário no menu suspenso.
  • b. Na guia Tokens de acesso, selecione Gerar novo token.
  • c. Insira um comentário que o ajude a identificar esse token, como “CDI Braze”.
  • d. Altere o tempo de vida do token para nenhum tempo de vida deixando a caixa Lifetime (days) em branco. Selecione Gerar.
  • e. Copie o token exibido e, em seguida, selecione Concluído.
  • f. Mantenha o token em um local seguro até que você precise inseri-lo durante a etapa de criação de credenciais no dashboard do Braze.

3. Se você tiver políticas de rede em vigor, deve conceder acesso à rede da Braze à sua instância do Databricks. Para uma lista de IPs, consulte a página Ingestão de dados na nuvem.

Como a integração funciona

Cada vez que a sincronização é executada, a Braze puxará todas as linhas onde UPDATED_AT está após o último carimbo de data/hora sincronizado. Recomendamos criar uma visualização no seu data warehouse a partir dos dados do seu catálogo para configurar uma tabela de origem que será totalmente atualizada cada vez que uma sincronização for executada. Com visualizações, você não precisará reescrever a consulta cada vez.

Por exemplo, se você tiver uma tabela de dados de produtos (product_catalog_1) com product_id e três atributos adicionais, você poderá sincronizar a visualização abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
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";
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
    CURRENT_TIMESTAMP as UPDATED_AT,
    Product_id as id,
    JSON_SERIALIZE(
        OBJECT (
            'attribute_1',
            attribute_1,
            'attribute_2',
            attribute_2,
            'attribute_3',
            attribute_3)
    ) as PAYLOAD FROM "product_catalog_1";
1
2
3
4
5
6
7
8
9
10
11
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS (SELECT
    last_updated as UPDATED_AT,
    product_id as ID,
    TO_JSON(
      STRUCT(
      attribute_1,
      attribute_2,
      attribute_3,
      )
    ) as PAYLOAD 
  FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.product_catalog_1`);
1
2
3
4
5
6
7
8
9
10
11
CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS (SELECT
    last_updated as UPDATED_AT,
    product_id as ID,
    TO_JSON(
      STRUCT(
      attribute_1,
      attribute_2,
      attribute_3,
      )
    ) as PAYLOAD 
  FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.product_catalog_1`);
  • Os dados obtidos da integração serão usados para criar ou atualizar itens no catálogo alvo com base no id fornecido.
  • Se DELETED estiver definido como true, o item do catálogo correspondente será excluído.
  • A sincronização não consumirá pontos de dados, mas todos os dados sincronizados contarão para o uso total do seu catálogo; esse uso é medido com base no total de dados armazenados, então você não precisa se preocupar em sincronizar apenas os dados alterados.
QUÃO ÚTIL FOI ESTA PÁGINA?
New Stuff!