Sobre Openflow Connector for Salesforce Bulk API

Nota

O conector está sujeito aos Termos do conector Snowflake.

Este tópico descreve os conceitos básicos da Openflow Connector for Salesforce Bulk API, o fluxo de trabalho e as limitações.

Integração de cópia zero com o Salesforce Data Cloud

O Snowflake oferece compartilhamento bidirecional e integração de cópia zero com o Salesforce. Essa integração é recomendada se você usa o Salesforce Data Cloud e precisa de uma integração bidirecional quase em tempo real.

Para obter mais informações sobre a integração de cópia zero com o Salesforce Data Cloud, consulte as seguintes postagens no blog:

Sobre Openflow Connector for Salesforce Bulk API

A Openflow Connector for Salesforce Bulk API oferece integração de dados baseada em replicação. O conector foi projetado para usuários que não usam o Salesforce Data Cloud e preferem um conector Snowflake Openflow totalmente gerenciado. O conector usa APIs REST públicas do Salesforce para replicar dados do Salesforce para o Snowflake em uma frequência definida pelo usuário. O conector é compatível com a captura de dados de alterações (Change Data Capture, CDC) e mantém os dados no Snowflake sincronizados com o Salesforce.

Você pode usar um ou ambos os tipos de integrações de dados, dependendo dos casos de uso específicos. Este tópico descreve como configurar e usar a Openflow Connector for Salesforce Bulk API para replicar dados do Salesforce para o Snowflake.

Casos de uso

Use a Openflow Connector for Salesforce Bulk API para replicar objetos padrão ou personalizados do Salesforce para o Snowflake em uma frequência especificada pelo usuário e mantê-los atualizados no Snowflake.

Fluxo de trabalho

O fluxo de trabalho a seguir descreve as etapas para configurar e usar a Openflow Connector for Salesforce Bulk API.

  1. Um administrador do Salesforce cria e configura um app de cliente externo no Salesforce e o aprova para um usuário específico.

  2. Um administrador do Openflow executa as seguintes tarefas:

    1. Criar um usuário de serviço para o conector, um warehouse para o conector e um banco de dados e esquema de destino para os dados replicados.

    2. Instale o conector.

    3. Especificar os parâmetros necessários para o modelo de fluxo.

  3. O engenheiro de dados executa o fluxo para replicar os objetos do Salesforce para o Snowflake.

Limitações

Considere as seguintes limitações ao usar o conector:

  • Domínios personalizados do Salesforce não são compatíveis.

  • Não há suporte para percorrer relacionamentos de objetos e buscar objetos relacionados.

  • O conector não oferece suporte a exclusões irreversíveis no Snowflake. Você pode executar uma consulta na tabela de destino para excluir todas as linhas em que a coluna isDeleted é true ou executar uma atualização completa da tabela de destino para refletir «exclusões irreversíveis».

  • Campos do tipo location, address ou base64 não são compatíveis e são ignorados.

  • Não é possível consolidar dados de várias instâncias do Salesforce em um único banco de dados no Snowflake. Os dados de uma única instância ou organização do Salesforce são ingeridos em um único banco de dados no Snowflake. Uma tabela é criada nesse banco de dados para cada objeto Salesforce replicado.

  • Os arquivos anexados aos registros do Salesforce são ignorados.

  • Os campos de fórmula não podem ser ingeridos de forma incremental.

Autenticação

O conector usa o método de autenticação JWT por meio de um app de cliente externo para se conectar ao Salesforce e recuperar os dados. Consulte a documentação em Openflow Connector for Salesforce Bulk API: Configuração do Salesforce para saber como configurar o app cliente no Salesforce.

Ciclo de vida de replicação

O conector replica os dados em dois estágios: replicação inicial e replicação incremental.

Replicação inicial

O conector chama a API Salesforce Bulk 2.0 para descobrir objetos padrão e personalizados especificados na configuração do conector. O conector respeita os limites da API Bulk 2.0 (API).

  • O conector cria uma tabela por objeto personalizado ou padrão com uma coluna para cada campo.

  • O conector usa o Snowpipe Streaming para o carregamento inicial para inserir linhas na tabela com base nos valores dos campos do objeto Salesforce.

Replicação incremental

Atualizações incrementais usam um warehouse do Snowflake que pode ser configurado nos parâmetros do conector. Dependendo de seus requisitos de latência e atualização de dados, você pode configurar a frequência para atualizações de 1 minuto a 24 horas, o que determina a frequência com que as tabelas são atualizadas no Snowflake.

Usando a frequência de atualização especificada, o conector chama a API Salesforce Bulk para detectar alterações em objetos previamente ingeridos. O conector identifica registros alterados verificando campos de carimbo de data/hora específicos nos objetos Salesforce.

Para a maioria dos objetos, o conector usa o campo SystemModstamp. Se SystemModstamp não estiver disponível, o conector tentará usar os seguintes campos, em ordem de preferência:

  1. LastModifiedDate

  2. CreatedDate

  3. LoginTime

Nota

Para tabelas de histórico (objetos em que o rastreamento de histórico está habilitado), o conector sempre usa o campo CreatedDate para detectar alterações.

O conector usa o Snowpipe Streaming para enviar os dados incrementais para uma tabela de preparação e executa uma consulta de mesclagem para carregar os dados na tabela de destino final.

Evolução do esquema

O conector oferece suporte à evolução de esquema quando os objetos de origem são alterados no Salesforce.

Quando um novo campo é adicionado ao objeto de origem:

O conector adiciona uma nova coluna à tabela de destino no Snowflake.

Quando um campo existente é renomeado no objeto de origem:

O conector trata a renomeação como uma exclusão de campo e uma adição de campo. A adição do campo faz com que uma nova coluna seja adicionada à tabela de destino. A exclusão do campo é tratada conforme descrito a seguir.

Quando um campo existente é excluído do objeto de origem:

O conector permite três estratégias:

  • Excluir: exclui a coluna correspondente da tabela de destino no Snowflake. Este é o comportamento padrão.

  • Ignorar: ignora o campo excluído na origem e o pula no futuro.

  • Renomear: renomeia o campo excluído na tabela de destino.

Por exemplo, se a estratégia de exclusão estiver definida como Ignore e um campo for renomeado para um objeto Salesforce, a coluna existente no Snowflake permanecerá inalterada e uma nova coluna com o novo nome de campo será adicionada.

Como os objetos são excluídos

Quando os objetos são excluídos do Salesforce, o conector não os «exclui de maneira irreversível» do Snowflake. O conector realiza «exclusões reversíveis» dos objetos excluídos do Salesforce e indica que os objetos de origem foram excluídos definindo a coluna isDeleted como true nas tabelas correspondentes do Snowflake.

O conector não oferece suporte a «exclusões irreversíveis». Você pode executar uma consulta na tabela de destino para excluir todas as linhas em que a coluna isDeleted é true ou executar uma atualização completa da tabela de destino para refletir «exclusões irreversíveis».

O conector pode perder operações de exclusão em situações em que os objetos são excluídos no Salesforce e limpos da lixeira do Salesforce quando o conector não estava em execução, por exemplo, se o conector foi pausado ou interrompido. Você deve executar uma atualização completa da tabela de destino para fazer a recuperação nessas situações.

Tratamento automático de novas tentativas

O conector repete automaticamente operações com falha ou erros de API usando uma estratégia de espera exponencial. O conector espera um segundo antes da primeira tentativa e depois dobra o tempo de espera para cada tentativa subsequente (dois segundos, quatro segundos e assim por diante). Se as falhas persistirem, o conector interrompe as tentativas até a próxima execução agendada. Você pode monitorar essa atividade na tabela de eventos.

Usar várias instâncias do conector para lidar com cronogramas de sincronização diferentes

Se você precisa sincronizar objetos diferentes em frequências distintas, por exemplo, alguns a cada 30 minutos e outros a cada 24 horas, a Snowflake recomenda implantar duas instâncias do conector separadas no mesmo tempo de execução. Depois disso, você poderá configurar os parâmetros de sincronização de maneira independente para cada instância.

Nota

A implantação de várias instâncias do conector no mesmo tempo de execução não gera custos adicionais.

Da mesma forma, se você precisa buscar integralmente alguns objetos sempre que o conector é executado, por exemplo, para contornar limitações com fórmulas, a Snowflake recomenda implantar duas instâncias do conector separadas no mesmo tempo de execução e configurar os parâmetros para cada instância.

Próximos passos

Para obter informações sobre como configurar o conector, consulte o seguinte tópico: