Compartilhar via


Copiar dados de e para o Salesforce V2 usando o Azure Data Factory ou o Azure Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Tip

Experimente o Data Factory no Microsoft Fabric, uma solução de análise completa para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo descreve como usar a Atividade de Cópia no pipeline do Azure Data Factory e do Azure Synapse para copiar dados de e para o Salesforce. Ele amplia o artigo Visão geral da Atividade de Cópia que apresenta uma visão geral da atividade de cópia.

Important

O conector Salesforce V1 está em estágio de remoção. Recomenda-se atualizar o conector Salesforce da V1 para a V2.

Capacidades suportadas

Há suporte para este conector do Salesforce nas seguintes funcionalidades:

Capacidades suportadas IR
Atividade de cópia (origem/coletor) (1) (2)
Atividade de pesquisa (1) (2)

① Tempo de execução de integração do Azure ② Tempo de execução de integração auto-hospedado

Para obter uma lista de armazenamentos de dados com suporte como origens ou coletores, confira a tabela Armazenamentos de dados com suporte.

Especificamente, este conector Salesforce dá suporte à:

  • Edições de Desenvolvedor, Professional, Enterprise ou Ilimitada do Salesforce.
  • Copiar dados de e para um domínio personalizado (o domínio personalizado pode ser configurado em ambientes de produção e área restrita).

Você pode definir explicitamente a versão da API usada para ler/gravar dados por meio da apiVersion propriedade no serviço vinculado. Quando você copia dados para o Salesforce, o conector usa a API BULK 2.0.

Prerequisites

  • A permissão de API deve estar habilitada no Salesforce.

  • Você precisa configurar os Aplicativos Conectados no portal do Salesforce mencionando esse documento oficial ou nossas orientações passo a passo incluídas nas recomendações desse artigo.

    Important

    • O usuário de execução deve ter o privilégio "Somente API".
    • O prazo de validade do token de acesso pode ser alterado por meio de políticas de sessão em vez do token de atualização.

Limites da API em Massa 2.0 do Salesforce

Usamos a API em Massa 2.0 do Salesforce para consultar e ingerir dados. Na API em Massa 2.0, os lotes são criados automaticamente. Você pode enviar até 15.000 lotes por um período de 24 horas. Se os lotes excederem o limite, você encontrará falhas.

Na API em Massa 2.0, somente os trabalhos de ingestão consomem lotes. Isso não ocorre com os trabalhos de consulta. Para obter detalhes, confira Como as solicitações são processadas na API em Massa 2.0 no Guia do Desenvolvedor.

Para obter mais informações, confira a seção “Limites gerais” em Limites do desenvolvedor Salesforce.

Introdução

Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:

Criar um serviço vinculado ao Salesforce usando a interface do usuário

Use as etapas a seguir para criar um serviço vinculado ao Salesforce na interface do usuário do portal do Azure.

  1. Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse e selecione Serviços Vinculados. Depois, clique em Novo:

  2. Pesquise por Salesforce e selecione o conector do Salesforce.

    Captura de tela do conector do Salesforce.

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Captura de tela da configuração do serviço vinculado para o Salesforce.

Detalhes da configuração do conector

As seções que se seguem fornecem detalhes sobre as propriedades que são usadas para definir entidades específicas ao conector do Salesforce.

Propriedades do serviço vinculado

As propriedades a seguir têm suporte para o serviço vinculado do Salesforce.

Property Description Required
tipo A propriedade type deve ser definida para SalesforceV2. Yes
environmentUrl Especifique a URL da instância do Salesforce.
Por exemplo, especifique "https://<domainName>.my.salesforce.com" para copiar dados do domínio personalizado. Saiba como configurar ou exibir seu domínio personalizado consultando este artigo.
Yes
authenticationType Tipo de autenticação usada para conexão com o Salesforce.
O valor permitido é OAuth2ClientCredentials.
Yes
clientId Especifique a ID de cliente do Aplicativo Conectado ao OAuth 2.0 da Salesforce. Para obter mais informações, acesse este artigo Yes
clientSecret Especifique o segredo do cliente do Aplicativo Conectado ao OAuth 2.0 da Salesforce. Para obter mais informações, acesse este artigo Yes
apiVersion Especifique a versão da API Bulk 2.0 da Salesforce que será usada, por exemplo, 52.0. A API em Massa 2.0 só dá suporte à versão >= 47.0 da API. Para saber mais sobre a versão da API Bulk 2.0, consulte este artigo. O uso de uma versão da API anterior resulta em falhas. Yes
connectVia O runtime de integração a ser usado para se conectar ao armazenamento de dados. Se não for especificado, ele usa o Integration Runtime padrão do Azure. No

Exemplo: armazenar credenciais

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "SecureString",
                "value": "<client secret>"
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemplo: Credenciais de armazenamento no Key Vault

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemplo: Armazenar credenciais no Cofre de Chaves, assim como environmentUrl e clientId

Ao armazenar as credenciais no Key Vault, assim como o environmentUrl e o clientId, você deixa de poder editar as configurações pela interface do usuário. É necessário marcar a opção Especificar conteúdos dinâmicos em formato JSON e fazer essa configuração manualmente. A vantagem desse necessário é que você poderá derivar todas as configurações do Key Vault em vez de parametrizar qualquer coisa aqui.

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of environment URL in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client ID in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dados

Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados do Salesforce.

Para copiar dados de e para a Salesforce, defina a propriedade type do conjunto de dados como SalesforceV2Object. Há suporte para as seguintes propriedades.

Property Description Required
tipo A propriedade type deve ser definida como SalesforceV2Object. Yes
objectApiName O nome do objeto de Salesforce para recuperar dados. A versão aplicável do runtime de integração auto-hospedada é a 5.44.8984.1 ou superior. “Não” para a fonte (se “query” estiver especificado na fonte), “Sim” para o coletor
reportId O ID do relatório da Salesforce do qual recuperar dados. Essa funcionalidade não tem suporte no coletor. Existem limitações ao usar relatórios. A versão aplicável do runtime de integração auto-hospedada é a 5.44.8984.1 ou superior. “Não” para a fonte (se “query” estiver especificado na fonte), sem suporte para o coletor

Important

A parte "__c" do Nome da API é necessária para qualquer objeto personalizado.

Nome da API de conexão do Salesforce

Example:

{
    "name": "SalesforceDataset",
    "properties": {
        "type": "SalesforceV2Object",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Propriedades da atividade de cópia

Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela fonte e coletor do Salesforce.

Salesforce como um tipo de fonte

Para copiar dados da Salesforce, defina o tipo da fonte na atividade de cópia como SalesforceV2Source. As propriedades a seguir têm suporte na seção source da atividade de cópia.

Property Description Required
tipo A propriedade type da fonte da atividade de cópia deve ser definida como SalesforceV2Source. Yes
consulta Utiliza a consulta personalizada para ler os dados. Você só pode usar a consulta SOQL (Salesforce Object Query Language ). Se a consulta não for especificada, todos os dados do objeto da Salesforce especificado em "objectApiName/reportId" no conjunto de dados serão recuperados. Não (se "objectApiName/reportId" no conjunto de dados estiver especificado)
includeDeletedObjects Indica se deve consultar os registros existentes, ou consultar todos os registros, incluindo o que foi excluído. Se não for especificado, o comportamento padrão será false.
Valores permitidos: false (padrão), true.
No
partitionOption Fornecer capacidade para detectar e aplicar automaticamente o algoritmo de particionamento ideal para otimizar a taxa de transferência de leitura, quando aplicável. Recomenda-se especificar AutoDetect para cópias de execução prolongada que podem se beneficiar de leituras multithread. O valor padrão é AutoDetect. No

Important

A parte "__c" do Nome da API é necessária para qualquer objeto personalizado.

Lista de nome de API de conexão do Salesforce

Example:

"activities":[
    {
        "name": "CopyFromSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceV2Source",
                "query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false,
                "partitionOption": "AutoDetect"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce como um tipo de coletor

Para copiar dados da Salesforce, defina o tipo de coletor na atividade de cópia como SalesforceV2Sink. As propriedades a seguir têm suporte na seção sink da atividade de cópia.

Property Description Required
tipo A propriedade type do coletor da atividade de cópia deve ser definida como SalesforceV2Sink. Yes
writeBehavior O comportamento da operação de gravação.
Valores permitidos são Insert e Upsert.
Não (o padrão é Insert)
externalIdFieldName O nome do campo de ID externo para a operação upsert. O campo especificado deve ser definido como “Campo de ID Externo” no objeto Salesforce. Ele não pode ter valores nulos nos dados de entrada correspondentes. Sim para "Upsert"
writeBatchSize A contagem de linhas de dados gravados no Salesforce em cada lote. Sugira definir esse valor de 10.000 a 200.000. Um número reduzido de linhas por lote diminui a eficiência da transferência. Muitas linhas em cada lote podem causar tempo limite na API. Não (o padrão é 100.000)
ignoreNullValues Indica se deve ignorar valores NULL de dados de entrada durante a operação de gravação.
Os valores permitidos são True e False.
- True: mantém os dados no objeto de destino inalterados quando você executa uma operação de upsert ou atualização. Insira um valor padrão definido quando você faz uma operação insert.
- False: atualiza os dados no objeto de destino como NULL quando você faz uma operação de upsert ou atualização. Insira um valor NULL quando você faz uma operação insert.
Não (padrão é falso)
 maxConcurrentConnections O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas.  No

Exemplo: coletor Salesforce em uma atividade de cópia

"activities":[
    {
        "name": "CopyToSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Salesforce output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SalesforceV2Sink",
                "writeBehavior": "Upsert",
                "externalIdFieldName": "CustomerId__c",
                "writeBatchSize": 10000,
                "ignoreNullValues": true
            }
        }
    }
]

Mapeamento de tipo de dados para Salesforce

Ao copiar dados do Salesforce, os seguintes mapeamentos são usados internamente dos tipos de dados do Salesforce para tipos de dados provisórios dentro do serviço. Para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor, consulte Mapeamentos de tipo de dados e esquema.

Tipo de dados do Salesforce Tipo de dados provisório do serviço
Numeração automática String
Checkbox booleano
Currency Decimal
Date DateTime
Data/Hora DateTime
Email String
ID String
Relação de pesquisa String
Lista de seleção múltipla String
Number Decimal
Percent Decimal
Phone String
Picklist String
Texto String
Área de texto String
Área de texto (longo) String
Área de texto (Rich) String
Texto (criptografado) String
URL String

Note

O tipo Número do Salesforce está mapeando para o tipo Decimal nos pipelines do Azure Data Factory e do Azure Synapse como um tipo de dados provisório de serviço. O tipo Decimal segue a precisão e a escala definidas. Dados com casas decimais que excedem a escala definida terão seus valores arredondados na pré-visualização e cópia dos dados. Para evitar a perda de precisão nos pipelines do Azure Data Factory e do Azure Synapse, aumente as casas decimais para um valor maior na medida do possível na página Edição da Definição de Campo Personalizado do Salesforce.

Pesquisar propriedades de atividade

Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.

Ciclo de vida e atualização do conector do Salesforce

A tabela a seguir mostra o estágio de lançamento e os logs de alteração para versões diferentes do conector do Salesforce:

Version Fase de liberação Log de alterações
Salesforce V1 Removed Não aplicável.
Salesforce V2 Versão GA disponível • Dê suporte à autenticação OAuth2ClientCredentials em vez da autenticação básica.

• Suporte somente à consulta SOQL.

• Apoie o relatório por selecionar um ID de relatório.

• Suporte a partitionOption na origem da atividade de cópia.

readBehavior é substituído por includeDeletedObjects na origem da atividade de cópia ou na atividade de pesquisa.

Atualizar o conector do Salesforce da V1 para a V2

Estas são as etapas que ajudarão você a atualizar o conector do Salesforce:

  1. Configure os aplicativos conectados no portal da Salesforce consultando os Pré-requisitos.

  2. Crie um novo serviço vinculado da Salesforce e configure-o consultando as Propriedades do serviço vinculado. Você também precisa atualizar manualmente os conjuntos de dados existentes que dependem do serviço vinculado antigo, alterando cada um para usar o novo serviço vinculado.

  3. Se você usar uma consulta SQL na fonte da atividade de cópia ou na atividade de pesquisa que se refere ao serviço vinculado do V1 será necessário convertê-la para a consulta SOQL. Saiba mais sobre a consulta SOQL em Salesforce como um tipo de fonte e Linguagem de Consulta da Salesforce Object (SOQL).

  4. Suporte a partitionOption na origem da atividade de cópia. Para obter a configuração detalhada, confira Salesforce como um tipo de origem.

  5. readBehavior é substituído includeDeletedObjects na origem da atividade de cópia ou na atividade de pesquisa. Para obter a configuração detalhada, confira Salesforce como um tipo de origem.

Para obter uma lista dos armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os Armazenamentos de dados com suporte.