Copiar dados de e para o Service Cloud da Salesforce usando o Azure Data Factory ou o Azure Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um 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 avaliação gratuita!

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 Service Cloud da Salesforce. Ele amplia o artigo Visão geral da Atividade de Cópia que apresenta uma visão geral da atividade de cópia.

Importante

O novo conector Service Cloud da Salesforce fornece suporte aprimorado ao Service Cloud da Salesforce nativo. Se você estiver usando o conector do Service Cloud herdado em sua solução, que tem suporte no estado em que se encontra para oferecer compatibilidade com versões anteriores, confira o artigo Conector do Service Cloud da Salesforce (herdado).

Funcionalidades com suporte

Há suporte para este conector do Service Cloud do Salesforce para as seguintes funcionalidades:

Funcionalidades com suporte IR
Atividade de cópia (origem/coletor) ① ②
Atividade de pesquisa ① ②

① Runtime de integração do Azure ② Runtime de integração auto-hospedada

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 do Service Cloud do Salesforce é compatível com:

  • 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. Ao copiar dados para o Service Cloud da Salesforce, o conector usará a API BULK 2.0.

Pré-requisitos

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

  • Você precisa configurar os Aplicativos Conectados no portal do Salesforce, referindo-se a este documento oficial ou à nossa diretriz passo a passo na recomendação deste artigo.

    Importante

    • 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ê verá 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, será possível usar as ferramentas ou os SDKs abaixo:

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

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

  1. Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou do Synapse e selecione Serviços Vinculados, em seguida, clique em Novo:

  2. Pesquise por Salesforce e selecione o conector de nuvem de serviço Salesforce.

    Captura de tela do conector do Salesforce Service Cloud.

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

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

Detalhes da configuração do conector

As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades específicas do conector do Service Cloud da Salesforce.

Propriedades do serviço vinculado

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

Propriedade Descrição Obrigatório
tipo A propriedade de tipo deve ser definida para SalesforceServiceCloudV2. Sim
environmentUrl Especifique a URL da instância do Service Cloud 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.
Sim
authenticationType Tipo de autenticação usado para conexão com o Salesforce Service Cloud.
O valor permitido é OAuth2ClientCredentials.
Sim
clientId Especifique a ID de cliente do Aplicativo Conectado ao OAuth 2.0 da Salesforce. Para obter mais informações, acesse este artigo Sim
clientSecret Especifique o segredo do cliente do Aplicativo Conectado ao OAuth 2.0 da Salesforce. Para obter mais informações, acesse este artigo Sim
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. Se você usar uma versão inferior da API, isso gerará em uma falha. Sim
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. Não

Exemplo: armazenar credenciais

{
    "name": "SalesforceServiceCloudLinkedService",
    "properties": {
        "type": "SalesforceServiceCloudV2",
        "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": "SalesforceServiceCloudLinkedService",
    "properties": {
        "type": "SalesforceServiceCloudV2",
        "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"
        }
    }
}

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 de propriedades compatíveis com o conjunto de dados do Service Cloud do Salesforce.

Para copiar dados de e para o Service Cloud da Salesforce, defina a propriedade "Tipo do conjunto de dados" como SalesforceServiceCloudV2Object. Há suporte para as seguintes propriedades.

Propriedade Descrição Obrigatório
tipo A propriedade "Tipo" deve ser definida para SalesforceServiceCloudV2Object. Sim
objectApiName O nome do objeto do Service Cloud da Salesforce do qual recuperar dados. "Não" para fonte (se "SOQLQuery" estiver especificado na fonte), "Sim" para coletor
reportId O ID do relatório do Service Cloud da Salesforce do qual recuperar dados. Não é compatível com o coletor. Observe que há limitações ao usar relatórios. Não para fonte (se "SOQLQuery" estiver especificado na fonte), não compatível com coletor

Importante

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

Nome da API de conexão do Salesforce

Exemplo:

{
    "name": "SalesforceServiceCloudDataset",
    "properties": {
        "type": "SalesforceServiceCloudV2Object",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce Service Cloud 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 compatíveis com a fonte e o coletor do Service Cloud do Salesforce.

Service Cloud do Salesforce como tipo de origem

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

Propriedade Descrição Obrigatório
tipo A propriedade de tipo de fonte da atividade de cópia deve ser definida como SalesforceServiceCloudV2Source. Sim
SOQLQuery Utiliza a consulta personalizada para ler os dados. Você só pode usar a consulta SOQL (Salesforce Object Query Language) com limitações. Para obter limitações de SOQL, confira este artigo. 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.
Não

Importante

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

Lista de nome de API de conexão do Salesforce

Exemplo:

"activities":[
    {
        "name": "CopyFromSalesforceServiceCloud",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce Service Cloud input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceServiceCloudV2Source",
                "SOQLQuery": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Service Cloud do Salesforce como tipo de coletor

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

Propriedade Descrição Obrigatório
tipo A propriedade de tipo do coletor da atividade de cópia deve ser definida como SalesforceServiceCloudV2Sink. Sim
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 de Service Cloud do 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 Service Cloud do Salesforce em cada lote. Sugira definir esse valor de 10 mil a 200 mil. Poucas linhas em cada lote reduzirão o desempenho da cópia. Muitas linhas em cada lote podem causar tempo limite da 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: Deixa os dados no objeto de destino inalterados quando você faz uma operação 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 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 com o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas.  Nenhum

Exemplo: coletor do Service Cloud da Salesforce em uma atividade de cópia

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

Mapeamento de tipo de dados para o Service Cloud do Salesforce

Ao copiar dados do Service Cloud da Salesforce, os seguintes mapeamentos são usados dos tipos de dados do Service Cloud da Salesforce para tipos de dados provisórios dentro do serviço internamente. 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 Service Cloud do Salesforce Tipo de dados provisório do serviço
Numeração automática String
Caixa de seleção Boolean
Moeda Decimal
Data Datetime
Data/Hora Datetime
Email String
ID String
Relação de pesquisa String
Lista de seleção múltipla String
Número Decimal
Porcentagem Decimal
Telefone String
Lista de seleção String
Texto Cadeia de caracteres
Área de texto String
Área de texto (longo) String
Área de texto (Rich) String
Texto (criptografado) String
URL String

Observação

O tipo de número do Salesforce Service Cloud está sendo mapeado 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. Para dados cujas casas decimais excedem a escala definida, o valor será arredondado em dados de visualização e cópia. Para evitar essa perda de precisão nos pipelines do Azure Data Factory e do Azure Synapse, considere aumentar as casas decimais para um valor razoavelmente grande na página Editar Definição de Campo Personalizado do Salesforce Service Cloud.

Pesquisar propriedades de atividade

Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.

Atualizar o serviço vinculado do Salesforce Service Cloud

Aqui estão as etapas que ajudarão você a atualizar seu serviço vinculado e as consultas relacionadas:

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

  2. Crie um novo serviço vinculado ao Service Cloud da Salesforce e configure-o consultando as Propriedades do serviço vinculado.

  3. Se você usar a consulta SQL na fonte da atividade de cópia ou na atividade de pesquisa que se refere ao serviço vinculado herdado, será necessário convertê-las na consulta SOQL. Saiba mais sobre a consulta SOQL do Service Cloud da Salesforce como um tipo de fonte e SOQL (Salesforce Object Query Language).

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

Diferenças entre o Salesforce Service Cloud e o Salesforce Service Cloud (herdado)

O conector do Salesforce Service Cloud oferece novas funcionalidades e é compatível com a maioria dos recursos do conector do Salesforce Service Cloud (herdado). A tabela a seguir mostra as diferenças de recursos entre o Salesforce Service Cloud e o Salesforce Service Cloud (herdado).

Salesforce Service Cloud Salesforce Service Cloud (herdado)
Suporte a SOQL na API em Massa do Salesforce 2.0.
Para consultas SOQL:
• Não há suporte para cláusulas GROUP BY, LIMIT, ORDER BY, OFFSET ou TYPEOF.
• Não há suporte para funções de agregação como COUNT() e você pode usar relatórios do Salesforce para implementá-las.
• Não há suporte para funções de data em cláusulas GROUP BY, mas elas têm suporte na cláusula WHERE.
• Não há suporte para campos de endereço composto ou campos de geolocalização compostos. Como alternativa, consulte os componentes individuais dos campos compostos.
• Não há suporte para consultas de relação de pai para filho, enquanto as consultas de relação de filho para pai são compatíveis.
Dê suporte à sintaxe SQL e SOQL.
Não há suporte para objetos que contêm campos binários. Há suporte para objetos que contêm campos binários, como o objeto Attachment.
Suporte a objetos na API em massa. Para obter mais informações, consulte este artigo. Suporte a objetos que não são compatíveis com a API em massa, como CaseStatus.
Suporte ao relatório selecionando uma ID de relatório. Suporte a sintaxe de consulta de relatório, como {call "<report name>"}.

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.