execução de consultas federadas no Salesforce Data 360
Esta página descreve como configurar o Lakehouse Federation para executar consultas federadas em dados do Salesforce Data 360 que não são gerenciados pelo Databricks. Para saber mais sobre a Lakehouse Federation, consulte O que é a Lakehouse Federation?
Para conectar-se ao seu banco de dados Salesforce Data 360 usando o Lakehouse Federation, você deve criar o seguinte no seu metastore Unity Catalog Databricks :
- Uma conexão com seu banco de dados Salesforce Data 360.
 - Um catálogo externo que espelha seu banco de dados do Salesforce Data 360 no Unity Catalog, permitindo que você use a sintaxe de consulta e as ferramentas de governança de dados do Unity Catalog para gerenciar o acesso dos usuários do Databricks ao banco de dados.
 
Qual conector Salesforce devo usar?
A Databricks oferece diversos conectores para o Salesforce. Existem dois conectores sem cópia: o conector de compartilhamento de arquivos do Salesforce Data 360 (anteriormente Data Cloud) e o conector de federação de consultas do Salesforce Data 360. Essas opções permitem consultar dados no Salesforce Data 360 sem precisar movê-los. Existe também um conector de ingestão do Salesforce que copia dados de vários produtos do Salesforce, incluindo o Salesforce Data 360 e o Salesforce Vendas Cloud.
A tabela a seguir resume as diferenças entre os conectores do Salesforce na Databricks:
Conector  | Caso de uso  | Produto Salesforce suportado  | 
|---|---|---|
Compartilhamento de arquivos do Salesforce Data 360  | Ao usar o conector de compartilhamento de arquivos do Salesforce Data 360 na Federação Lakehouse, Databricks chama APIs do Salesforce Data-as-a-Serviço (DaaS) para ler os dados diretamente no local de armazenamento de objetos cloud subjacente. As consultas são executadas no Databricks compute sem usar o protocolo JDBC . Em comparação com a federação de consultas, o compartilhamento de arquivos é ideal para federar uma grande quantidade de dados. Oferece desempenho aprimorado na leitura de arquivos de múltiplas fontes de dados e melhores recursos de pushdown. Consulte Compartilhamento de arquivos da Lakehouse Federation para Salesforce Data 360.  | Salesforce Data 360  | 
Federação de consultas do Salesforce Data 360  | Ao usar o conector de federação de consultas do Salesforce Data 360 no ambiente Lakehouse Federation, Databricks utiliza JDBC para se conectar aos dados de origem e envia as consultas para o Salesforce. Consulte execução de consultas federadas no Salesforce Data 360.  | Salesforce Data 360  | 
Ingestão do Salesforce  | O conector de ingestão do Salesforce no LakeFlow Connect permite criar um pipeline de ingestão totalmente gerenciado a partir dos dados da plataforma Salesforce. Esse conector maximiza o valor aproveitando não apenas os dados do CDP, mas também os dados do CRM na Plataforma de Inteligência de Dados. Consulte Ingerir dados do Salesforce.  | Consulte Qual produto Salesforce é compatível com o conector de ingestão do Salesforce?  | 
Antes de começar
Requisitos do workspace:
- Espaço de trabalho preparado para o Catálogo do Unity.
 
Requisitos de computação:
- Conectividade de rede do seu recurso compute para os sistemas de banco de dados de destino. Veja as recomendações do Networking para a Lakehouse Federation.
 - Databricks compute deve usar o site Databricks Runtime 15.2 ou acima e o modo de acesso Standard ou Dedicated .
 - SQL O armazém deve ser pro ou serverless e deve usar 2024.30 ou acima.
 
Permissões necessárias:
- Para criar uma conexão, é preciso ser administrador de metastore ou usuário com o privilégio 
CREATE CONNECTIONno metastore do Unity Catalog anexado ao espaço de trabalho. - Para criar um catálogo externo é preciso ter a permissão 
CREATE CATALOGno metastore e ser proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOGna conexão. 
Outros requisitos de permissão são definidos em cada seção baseada em tarefa a seguir.
Crie um aplicativo conectado ao Salesforce
Os aplicativos conectados ao Salesforce permitem que um aplicativo externo se integre ao Salesforce usando APIs e protocolos padrão. Esta seção descreve como criar um aplicativo conectado usando SSO para permitir que o Databricks se autentique no Salesforce.
Para obter instruções mais detalhadas, consulte Criar um aplicativo conectado na documentação do Salesforce Data 360.
Para criar um aplicativo conectado ao Salesforce, faça o seguinte:
- 
No canto superior direito do Data 360, clique em Configuração .
 - 
Em Ferramentas da plataforma , clique em Apps > App Manager .
 - 
Clique em Novo aplicativo conectado .
 - 
Digite um nome e um endereço de contato email.
 - 
Ativar as configurações do OAuth :
- 
Insira o URL de retorno de chamada, no seguinte formato:
https://<databricks_instance_url>/login/oauth/salesforce.html. Por exemplo:https://cust-success.cloud.databricks.com/login/oauth/salesforce.html. - 
(Opcional) Se o senhor planeja usar o SQL para criar a conexão Databricks e o catálogo externo na próxima etapa, seu Salesforce Connected App também precisa suportar o URI de redirecionamento
https://login.salesforce.com/services/oauth2/success. Isso não é necessário se o senhor planeja usar o Catalog Explorer para criar a conexão Databricks e o catálogo externo. A Databricks recomenda o uso do Catalog Explorer porque ele exige menos etapas manuais do que outros métodos. - 
Adicione os seguintes escopos :
- Acesse todos os recursos API Data 360 ( cdp_api )
 - Gerenciar dados do usuário via APIs (api )
 - Execute consultas ANSI SQL em dados do Data 360 ( cdp_query_api )
 - Realizar solicitações a qualquer momento (refresh, offline_access )
 
 - 
Clique em Salvar .
 - 
Clique em "Continuar" .
 
 - 
 - 
Na página de visão geral do Connected App , clique em gerenciar Consumer Details . Você será solicitado a se autenticar.
 - 
Após a autenticação bem-sucedida, o consumidor key e o segredo do consumidor são revelados. Salve esses valores. O senhor precisará deles quando criar uma conexão com o Databricks.
 
Criar uma conexão com o Databricks
A conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e Unity Catalog comando.
Permissões necessárias: Administrador do Metastore ou usuário com o privilégio CREATE CONNECTION.
- Catalog Explorer
 - SQL
 
- 
Em seu site Databricks workspace, clique em
Catalog .
 - 
Na parte superior do painel Catálogo , clique no ícone
Adicionar e selecione Adicionar uma conexão no menu.
Como alternativa, na página de acesso rápido , clique no botão Dados externos >, acesse a tab Conexões e clique em Criar conexão .
 - 
Na página Noções básicas de conexão do assistente de configuração de conexão , insira um nome de conexão fácil de usar.
 - 
Selecione um tipo de conexão do Salesforce Data 360 .
 - 
(Opcional) Adicione um comentário.
 - 
Na página de Autenticação , insira as seguintes propriedades de conexão para o seu Salesforce Data 360:
- (Opcional) Selecione Is sandbox .
 - ID do cliente : Consumidor do aplicativo conectado do Salesforce key.
 - Segredo do cliente: segredo do consumidor do aplicativo conectado à Salesforce.
 - Escopo do cliente : 
cdp_api api cdp_query_api refresh_token offline_access 
 - 
Clique em Entrar com o Salesforce .
 - 
(OAuth) Você será solicitado a fazer login no Salesforce Data 360 usando suas credenciais de SSO.
 - 
Após o login bem-sucedido, o senhor será direcionado de volta ao assistente de conexão do Databricks Set up. O botão Entrar com o Salesforce foi substituído por uma mensagem
Successfully authorized. - 
Clique em Criar conexão .
 - 
Na página Noções básicas do catálogo , insira um nome para o catálogo estrangeiro. Um catálogo externo espelha um banco de dados em um sistema de dados externo para que o senhor possa consultar e gerenciar o acesso aos dados desse banco de dados usando o Databricks e o Unity Catalog.
 - 
Entre no espaço de dados do Salesforce.
 - 
(Opcional) Clique em Testar conexão para confirmar se está funcionando.
 - 
Clique em Criar catálogo .
 - 
Na página Access (Acesso) , selecione o espaço de trabalho no qual os usuários podem acessar o catálogo que o senhor criou. O senhor pode selecionar All workspace have access (Todos os espaços de trabalho têm acesso ) ou clicar em Assign to workspace (Atribuir ao espaço de trabalho), selecionar o espaço de trabalho e clicar em Assign (Atribuir ).
 - 
Altere o proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados.
 - 
Conceda privilégios no catálogo. Clique em Conceder :
- 
Especifique os diretores que terão acesso aos objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados.
 - 
Selecione as predefinições de privilégios a serem concedidas a cada diretor. Todos os usuários de account recebem
BROWSEpor default.- Selecione Leitor de dados no menu suspenso para conceder privilégios 
readem objetos no catálogo. - Selecione Editor de dados no menu suspenso para conceder os privilégios 
reademodifyaos objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
 
 - Selecione Leitor de dados no menu suspenso para conceder privilégios 
 - 
Clique em Conceder .
 
 - 
 - 
Clique em Avançar .
 - 
Na página Metadata (Metadados ), especifique as tags em key-value. Para obter mais informações, consulte Apply tags to Unity Catalog securable objects.
 - 
(Opcional) Adicione um comentário.
 - 
Clique em Salvar .
 
A Databricks recomenda o uso do Catalog Explorer para criar a conexão e o catálogo externo porque ele exige menos etapas manuais do que outros métodos.
Se o senhor planeja usar o SQL para criar a conexão Databricks e o catálogo externo, seu Salesforce Connected App precisa suportar o URI de redirecionamento https://login.salesforce.com/services/oauth2/success. Isso não é necessário se você usar o Catalog Explorer.
- 
Gere o verificador de código PKCE e códigos de desafio de código. Você pode fazer isso usando uma ferramenta on-line, como https://tonyxu-io.github.io/pkce-generator/ ou executando o seguinte script Python:
Python%python
import base64
import re
import os
import hashlib
code_verifier = base64.urlsafe_b64encode(os.urandom(40)).decode('utf-8')
code_verifier = re.sub('[^a-zA-Z0-9]+', '', code_verifier)
code_challenge = hashlib.sha256(code_verifier.encode('utf-8')).digest()
code_challenge = base64.urlsafe_b64encode(code_challenge).decode('utf-8')
code_challenge = code_challenge.replace('=', '')
print(f"pkce_verifier = \"{code_verifier}\"")
print(f"code_challenge = \"{code_challenge}\"") - 
Visite o URL a seguir e autentique-se com suas credenciais do Salesforce para obter o
authorization_code(substitua<client_id>e<code_challenge>pelos seus parâmetros).https://login.salesforce.com/services/oauth2/authorize
?client_id=<client_id>
&redirect_uri=https://login.salesforce.com/services/oauth2/success
&response_type=code
&code_challenge=<code_challenge>Um código de autorização codificado em URL está visível no URL redirecionado.
 - 
Execute o seguinte em um Notebook ou no editor de consultas Databricks SQL:
SQLCREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud
OPTIONS (
client_id '<Consumer key from Salesforce Connected App>',
client_secret '<Consumer secret from Salesforce Connected App>',
pkce_verifier '<pkce_verifier from the last step>',
authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>',
oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success",
oauth_scope "cdp_api api cdp_query_api refresh_token offline access",
is_sandbox "false"
);Databricks recomenda que o senhor use Databricks segredos em vez de texto simples strings para valores confidenciais, como credenciais. Por exemplo:
SQLCREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud
OPTIONS (
client_id secret ('<Secret scope>','<Secret key client id>'),
client_secret secret ('<Secret scope>','<Secret key client secret>'),
pkce_verifier '<pkce_verifier from the last step>',
authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>',
oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success",
oauth_scope "cdp_api api cdp_query_api refresh_token offline access",
is_sandbox "false"
);Para obter informações sobre a configuração de segredos, consulte Gerenciamento de segredos.
 
Crie um catálogo estrangeiro
Se o senhor usar a interface do usuário para criar uma conexão com a fonte de dados, a criação do catálogo externo estará incluída e o senhor poderá ignorar essa etapa.
Um catálogo externo espelha um banco de dados em um sistema de dados externo para você consultar e gerenciar o acesso aos dados nesse banco de dados com Databricks e Unity Catalog. Para criar um catálogo externo, utiliza-se uma conexão com a fonte de dados que já foi definida.
Para criar um catálogo externo, o senhor pode usar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG SQL em um Notebook Databricks ou o editor de consultas SQL. O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar um catálogo. Veja POST /api/2.1/unity-catalog/catalogs e Unity Catalog comando.
Permissões necessárias: permissão CREATE CATALOG na metastore e propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG na conexão.
- Catalog Explorer
 - SQL
 
- 
Em seu site Databricks workspace, clique em
Catalog para abrir o Catalog Explorer.
 - 
No canto superior direito, clique em Criar catálogo .
 - 
Insira as seguintes propriedades para o seu catálogo do Salesforce Data 360.
- Nome do catálogo : um nome fácil de usar para o catálogo.
 - Tipo : 
Foreign. - Nome da conexão : o nome da conexão na qual o catálogo será criado.
 - Espaço de dados: um espaço de dados do Salesforce.
 
 - 
Clique em Criar .
 
Execute o seguinte comando SQL em um notebook ou no editor de consultas SQL. Os itens entre colchetes são opcionais.
CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');
Substitua os seguintes valores:
<catalog-name>:<connection-name>:<dataspace>: espaço de dados do Salesforce. Por exemplo,default.
Pushdowns suportados
Os seguintes pushdowns são suportados:
- Filtros
 - Projeções
 - Limite
 - Agregados
 - deslocamento
 - Elenco
 - Contém, começa com, termina com
 
Mapeamentos de tipos de dados
Ao ler dados do Salesforce Data 360 para o Spark, os tipos de dados são mapeados da seguinte forma:
Tipo de dados Salesforce 360  | Spark tipo  | 
|---|---|
Booleana  | Tipo booleano  | 
Data  | Tipo de data  | 
Data e hora  | timestampType  | 
e-mail, telefone, texto, URL  | Tipo de string  | 
Número, Porcentagem  | Tipo decimal (38, 18)  | 
Limitações
- Só há suporte para um espaço de dados do Salesforce por catálogo do Databricks.
 - No Databricks Runtime 16.1 e versões anteriores, nomes de tabelas e esquemas que diferenciam maiúsculas de minúsculas não são suportados. Isso inclui nomes que contêm letras maiúsculas no Salesforce Data 360. Por exemplo, 
MyTablenão é suportado.