Carregar dados do Salesforce no BigQuery
Para programar transferências de dados recorrentes do Salesforce Sales Cloud
para o BigQuery, crie uma configuração de transferência para especificar quais objetos de dados
transferir e com que frequência programar a transferência de dados. É possível criar
uma configuração de transferência usando o Google Cloud console, a ferramenta de linha de comando
bq ou a API do serviço de transferência de dados do BigQuery. Depois de definir a
configuração de transferência,
o serviço de transferência de dados do BigQuery
transfere os dados mais recentes para uma tabela do BigQuery na programação
especificada.
Para saber como funciona uma transferência do Salesforce, consulte Introdução às transferências de dados do Salesforce.
Limitações
As transferências de dados do Salesforce estão sujeitas às seguintes limitações:
- O conector do Salesforce só aceita transferências do Salesforce Sales Cloud.
- O conector do Salesforce só é compatível com os campos incluídos na versão 64.0 da API Salesforce Bulk V1. Alguns campos incluídos em versões anteriores da API Salesforce Bulk podem não ser compatíveis. Para mais informações sobre essas mudanças no conector do Salesforce, consulte API Salesforce Bulk.
O conector do Salesforce usa a API Salesforce Bulk V1 para se conectar ao endpoint do Salesforce Sales Cloud e recuperar dados.
- O conector do Salesforce só aceita a API Salesforce Bulk V1 para se conectar à instância do Salesforce e só aceita a transferência de entidades compatíveis com essa API. Para mais informações sobre quais entidades são compatíveis, consulte A entidade não é compatível com o erro da API Bulk.
O conector do Salesforce não é compatível com a transferência dos seguintes objetos que têm campos binários.
AttachmentContentVersionDocumentStaticResourceScontrolEmailCaptureMailMergeTemplate
O intervalo mínimo entre as transferências de dados recorrentes é de 15 minutos. O intervalo padrão para uma transferência recorrente é 24 horas.
Devido aos limites de processamento do Salesforce, programar muitas transferências de dados ao mesmo tempo pode causar atrasos ou falhas. Recomendamos que você limite as transferências de dados do Salesforce ao seguinte:
- Não ter mais de 10 recursos por configuração de transferência.
- Nas diferentes configurações de transferência, não tenha mais de 10 execuções de transferência simultâneas por vez.
Uma única configuração de transferência só pode aceitar uma execução de transferência de dados por vez. Se uma segunda transferência de dados estiver programada para ser executada antes da conclusão da primeira, apenas a primeira transferência de dados será concluída, e as outras transferências de dados que se sobrepõem à primeira serão ignoradas.
- Para evitar transferências ignoradas em uma única configuração de transferência, recomendamos que você aumente o tempo entre grandes transferências de dados configurando a Frequência de repetição.
Se você estiver usando anexos de rede com a transferência de dados, será necessário configurar uma conversão de endereços de rede (NAT) pública com um endereço IP estático. Para mais informações, consulte Configurar a lista de permissões de IP para transferências do Salesforce.
Se o anexo de rede configurado e a instância de máquina virtual (VM) estiverem localizados em regiões diferentes, poderá haver movimentação de dados entre regiões ao transferir dados do Salesforce.
Limitações de transferência incremental
As transferências incrementais do Salesforce estão sujeitas às seguintes limitações:- Só é possível escolher colunas
TIMESTAMPcomo colunas de marca-d'água. - A ingestão incremental só é compatível com recursos que têm colunas de marca-d'água válidas.
- Os valores em uma coluna de marca-d'água precisam aumentar monotonicamente.
- As transferências incrementais não podem sincronizar operações de exclusão na tabela de origem.
- Uma única configuração de transferência só pode aceitar ingestão incremental ou completa.
- Não é possível atualizar objetos na lista
assetapós a primeira execução de ingestão incremental. - Não é possível alterar o modo de gravação em uma configuração de transferência após a primeira execução de ingestão incremental.
- Não é possível alterar a coluna de marca-d'água ou a chave primária após a primeira execução de ingestão incremental.
- A tabela de destino do BigQuery é agrupada em cluster usando a chave primária fornecida e está sujeita às limitações de tabelas em cluster.
- Quando você atualiza uma configuração de transferência para o modo de ingestão incremental pela primeira vez, a primeira transferência de dados após essa atualização transfere todos os dados disponíveis da sua fonte de dados. Todas as transferências de dados incrementais subsequentes vão transferir apenas as linhas novas e atualizadas da fonte de dados.
Para saber como as transferências incrementais funcionam, consulte Transferências completas ou incrementais.
Antes de começar
Nas seções a seguir, descrevemos as etapas que você precisa seguir antes de criar uma transferência de dados do Salesforce.
Criar um app conectado do Salesforce
É necessário criar um app conectado do Salesforce com as seguintes configurações obrigatórias:
- Configure as informações básicas no app conectado. Os campos Connected App Name e Contact Email são obrigatórios para uma transferência do Salesforce.
- Ative as configurações do OAuth
com as seguintes configurações:
- Marque a caixa de seleção Ativar configurações do OAuth.
- No campo URL de chamada de retorno, digite o seguinte.
- Para um ambiente de produção, insira
https://login.salesforce.com/services/oauth2/token. - Para um ambiente de sandbox, insira
https://test.salesforce.com/services/oauth2/token.
- Para um ambiente de produção, insira
- Verifique se a caixa de seleção Emitir tokens de acesso baseados em JSON Web Token (JWT) para usuários nomeados não está marcada.
- Na seção Escopos OAuth selecionados, selecione Gerenciar dados do usuário por APIs (api).
- Selecione Ativar o fluxo de credenciais do cliente e clique em OK no aviso que aparece.
Depois de configurar o app conectado com as configurações necessárias, clique em Salvar. Você será redirecionado para a página de detalhes do app conectado recém-criado.
Depois de criar o app conectado, você também precisa configurar o fluxo de credenciais do cliente:
- Clique em Configurar.
- Na barra de pesquisa, pesquise Apps conectados.
- Clique em Gerenciar apps > Apps conectados. Se você estiver usando a Salesforce Lightning Experience, clique em Gerenciar apps conectados.
- No app conectado que você criou, clique em Editar.
- A página Detalhes do app é exibida. Na seção Fluxo de credenciais do cliente, insira seu nome de usuário no campo Executar como. Você pode usar a ferramenta de localização neste campo para garantir que selecionou o usuário correto.
- Clique em Salvar.
Informações obrigatórias do Salesforce
Você precisa ter as seguintes informações do Salesforce ao criar uma transferência de dados do Salesforce:
| Nome do parâmetro | Descrição |
|---|---|
myDomain |
Seu Meu domínio no Salesforce. |
clientId |
Chave do cliente do aplicativo conectado do Salesforce. |
clientSecret |
Chave secreta do cliente OAuth ou do cliente do aplicativo conectado do Salesforce. |
Para receber os valores myDomain, clientID e clientSecret,
selecione uma das seguintes opções:
Salesforce Classic
Extrair detalhes de myDomain
Para encontrar o myDomain, faça o seguinte:
- Faça login na plataforma do Salesforce.
- Clique em Configurar.
- Na barra de pesquisa, pesquise Meu domínio.
- Nos resultados da pesquisa, clique em Gerenciamento de domínio > Meu domínio.
Na seção Detalhes do meu domínio, o myDomain aparece como
o prefixo no URL atual do meu domínio. Por exemplo, se o URL do Meu domínio for
example.my.salesforce.com, o valor de myDomain a ser usado será example.
Extrair detalhes de ClientId e ClientSecret
Para encontrar os valores ClientId e ClientSecret, faça o seguinte:
- Faça login na plataforma do Salesforce.
- Clique em Configurar.
- Na barra de pesquisa, digite Apps.
- Na seção Build dos resultados da pesquisa, clique em Criar > Apps.
- Clique em um Nome do app conectado.
- Na página de detalhes Apps conectados, clique em Gerenciar detalhes do consumidor.
- Verifique sua identidade usando um dos métodos registrados. Você pode acessar a página de detalhes do consumidor por até cinco minutos antes de receber a solicitação de verificação da identidade novamente.
- Na página Detalhes do consumidor, a chave do consumidor é o valor
ClientId. O Customer Secret é o valorClientSecret.
Experiência do Salesforce Lightning
Extrair detalhes de myDomain
Para encontrar o myDomain, faça o seguinte:
- Faça login na plataforma do Salesforce.
Clique em Configurar.
Na barra de pesquisa, pesquise Meu domínio.
Nos resultados da pesquisa, clique em Configurações da empresa > Meu domínio.
Na seção Detalhes do meu domínio, o myDomain aparece como
o prefixo no URL atual do meu domínio. Por exemplo, se o URL do Meu domínio for
example.my.salesforce.com, o valor de myDomain a ser usado será example.
Extrair detalhes de ClientId e ClientSecret
- Faça login na plataforma do Salesforce.
- Clique em Configurar.
- Na barra de pesquisa, digite Apps.
- Nos resultados da pesquisa, clique em Apps > Gerenciador de apps.
- Encontre um app conectado e clique em Visualizar.
- Clique em Gerenciar detalhes do consumidor.
- Verifique sua identidade usando um dos métodos registrados. Você pode acessar a página de detalhes do consumidor por até cinco minutos antes de receber a solicitação de verificação da identidade novamente.
- Na página Detalhes do consumidor, a chave do consumidor é o valor
ClientId. O Customer Secret é o valorClientSecret.
Configurar a lista de permissões de IP para transferências do Salesforce
É necessário configurar o ambiente do Google Cloud e a conta do Salesforce para adicionar endereços IP específicos à lista de permissões para transferências de dados. Isso garante que o Salesforce aceite apenas conexões de um endereço IP estático e confiável. Essa etapa é necessária se você estiver usando anexos de rede com as transferências de dados.
Para fazer isso, primeiro configure sua rede do Google Cloud para usar um endereço IP estático:
- Configure uma conversão de endereços de rede (NAT) pública com um endereço IP estático na sua rede de nuvem privada virtual. O Cloud NAT precisa ser configurado na mesma região do conjunto de dados de destino para essa transferência de dados.
- Configure um anexo de rede na mesma rede VPC. Esse recurso é usado pelo serviço de transferência de dados do BigQuery para acessar serviços particulares.
Em seguida, configure os intervalos de IP confiáveis no Salesforce. Ao adicionar o intervalo do endereço IP, use o endereço IP estático do Google Cloud Public NAT para os endereços IP inicial e final do intervalo de IP.
Depois de configurar os intervalos de IP, especifique o IP estático ao definir a configuração de transferência selecionando o anexo de rede no campo Anexo de rede.
Pré-requisitos do BigQuery
- Verifique se você realizou todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
- Crie um conjunto de dados do BigQuery para armazenar os dados.
- Se quiser configurar notificações de execução de transferência do Pub/Sub,
verifique se você tem a permissão
pubsub.topics.setIamPolicydo Identity and Access Management (IAM). As permissões do Pub/Sub não serão necessárias caso você configure notificações por e-mail. Para mais informações, consulte Notificações de execução do serviço de transferência de dados do BigQuery.
Papéis obrigatórios do BigQuery
Para receber as permissões necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery, peça ao administrador para conceder a você o papel do IAM de Administrador do BigQuery (roles/bigquery.admin) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery:
-
Permissões do serviço de transferência de dados do BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Permissões do BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para mais informações, consulte Conceder acesso ao bigquery.admin.
Configurar uma transferência de dados do Salesforce
Adicione dados do Salesforce ao BigQuery definindo uma configuração de transferência usando uma das seguintes opções:
Console
Acesse a página "Transferências de dados" no console do Google Cloud .
Clique em Criar transferência.
Na seção Tipo de origem, em Origem, escolha Google AdWords.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em Anexo de rede, selecione uma opção na lista. É necessário configurar o Public NAT e a lista de permissão de IP antes de usar um anexo de rede com essa transferência de dados.
- Em Meu domínio, insira o Meu domínio do Salesforce.
- Em ID do cliente, insira o token do cliente do aplicativo conectado do Salesforce.
- Em Chave secreta do cliente, insira a chave secreta do cliente do aplicativo conectado do Salesforce.
- Em Tipo de ingestão, selecione Completa ou Incremental.
- Se você selecionar Incremental em Modo de gravação, selecione Anexar ou Upsert. Para mais informações sobre os diferentes modos de gravação, consulte Transferências completas ou incrementais.
- Em Objetos do Salesforce para transferência, clique em Procurar:
- Selecione os objetos a serem transferidos para o conjunto de dados de destino do BigQuery. Nesse campo, também é possível inserir manualmente qualquer objeto para incluir na transferência de dados.
- Se você tiver selecionado Adicionar como modo de gravação incremental, escolha uma coluna como marca d'água.
- Se você tiver selecionado Upsert como modo de gravação incremental, selecione uma coluna como marca d'água e uma ou mais colunas como chave primária.
No campo Conjunto de dados da seção Configurações de destino, escolha o conjunto criado para armazenar seus dados.
No campo Nome de exibição da seção Nome de configuração da transferência, insira um nome para a transferência de dados.
Na seção Opções de programação, faça o seguinte:
- Na lista Frequência de repetição, selecione uma opção para especificar com que frequência essa transferência de dados é executada. Para especificar uma frequência de repetição personalizada, selecione Personalizada. Se você selecionar Sob demanda, essa transferência será executada quando você acionar manualmente a transferência.
- Se aplicável, selecione Começar agora ou Começar no horário definido e escolha uma data de início e hora de execução.
Opcional: na seção Opções de notificação, faça o seguinte:
- Para ativar as notificações por e-mail, clique no botão que ativa as Notificações por e-mail. Quando essa opção está ativada, o administrador da transferência recebe uma notificação por e-mail quando uma execução da transferência falha.
- Para ativar as notificações de execução de transferência do Pub/Sub para essa transferência, clique no botão de alternância Notificações do Pub/Sub. Selecione o nome do tópico ou clique em Criar tópico.
Clique em Salvar.
bq
Insira o comando bq mk e forneça a sinalização de execução da transferência
--transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=NAME --target_dataset=DATASET --params='PARAMETERS'
Em que:
- PROJECT_ID (opcional): o ID do projeto do Google Cloud .
Se
--project_idnão for fornecido para especificar um projeto determinado, o projeto padrão será usado. - DATA_SOURCE: a fonte de dados —
salesforce. - NAME: o nome de exibição da configuração da transferência de dados. O nome da transferência pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.
- DATASET: o conjunto de dados de destino na configuração de transferência.
PARAMETERS é o parâmetro da configuração de transferência criada no formato JSON. Por exemplo,
--params='{"param":"param_value"}'. Confira a seguir os parâmetros de uma transferência de dados do Salesforce:connector.authentication.oauth.clientId: o token do cliente do aplicativo conectado do Salesforce.connector.authentication.oauth.clientSecret: chave secreta do cliente OAuth ou do cliente do aplicativo conectado do Salesforce.connector.authentication.oauth.myDomain: o My Domain do Salesforce. Por exemplo, se o URL do domínio forexample.my.salesforce.com, o valor seráexample.ingestionType: especifiquefullouincremental. Para mais informações, consulte Transferências completas ou incrementais.writeMode: especifiqueWRITE_MODE_APPENDouWRITE_MODE_UPSERT.watermarkColumns: especifica colunas na tabela como colunas de marca-d'água. Este campo é obrigatório para transferências incrementais.primaryKeys: especifique colunas na tabela como chaves primárias. Este campo é obrigatório para transferências incrementais.assets: o caminho para os objetos do Salesforce a serem transferidos para o BigQuery.
Ao especificar vários recursos durante uma transferência incremental, os valores
dos campos watermarkColumns e primaryKeys correspondem à
posição dos valores no campo assets. No exemplo a seguir,
Id corresponde à tabela Account, enquanto master_label
e type correspondem à tabela CaseHistory.
"primaryKeys":[['Id'], ['master_label','type']], "assets":["Account","CaseHistory"],
O comando a seguir cria uma transferência de dados incremental do Salesforce no
projeto padrão e usa o modo de gravação APPEND.
bq mk --transfer_config --target_dataset=mydataset --data_source=salesforce --display_name='My Transfer' --params='{"assets": ["Account", "CaseHistory"] "connector.authentication.oauth.clientId": "1234567890", "connector.authentication.oauth.clientSecret":"ABC12345", "connector.authentication.oauth.myDomain":"MyDomainName", "connector.authentication.username":"user1@force.com", "connector.authentication.password":"abcdef1234", "ingestionType":"incremental", "writeMode":"WRITE_MODE_UPSERT", "watermarkColumns":["SystemModstamp","CreatedDate"] "primaryKeys":[['Id'], ['master_label','type']]}'
API
Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.
Para executar manualmente uma transferência de dados fora da programação regular, inicie uma execução de preenchimento.
Resolver problemas na configuração da transferência
Se você tiver problemas para configurar a transferência de dados, consulte Problemas de transferência no Salesforce.
A seguir
- Para uma visão geral do serviço de transferência de dados do BigQuery, consulte Introdução ao serviço de transferência de dados do BigQuery.
- Para informações sobre o uso de transferências, incluindo obter informações sobre uma configuração de transferência, listar configurações de transferência e visualizar o histórico de execução de uma transferência, consulte Como trabalhar com transferências.
- Saiba como carregar dados com as operações do BigQuery Omni.