Execução de consultas federadas no Salesforce Data cloud
Este artigo descreve como configurar o Lakehouse Federation para executar consultas federadas nos dados da nuvem do Salesforce Data que não são gerenciados por Databricks. Para saber mais sobre a lakehouse Federation, consulte O que é a lakehouse Federation?
Para se conectar ao banco de dados do Salesforce Data cloud usando a Federação lakehouse, o senhor deve criar o seguinte no metastore Databricks Unity Catalog :
Uma conexão com o banco de dados do Salesforce Data cloud.
Um catálogo externo que espelha o banco de dados do Salesforce Data cloud em Unity Catalog para que o senhor possa usar a sintaxe de consulta Unity Catalog e as ferramentas de governança de dados para gerenciar o acesso do usuário Databricks ao banco de dados.
Antes de começar
workspace Requisitos:
workspace habilitado para Unity Catalog.
compute Requisitos:
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 de usuário compartilhado ou único.
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, o senhor deve ser um administrador de metastore ou um usuário com o privilégio
CREATE CONNECTION
no metastore Unity Catalog anexado ao workspace.Para criar um catálogo externo, o senhor deve ter a permissão
CREATE CATALOG
no metastore e ser o proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOG
na conexão.
Requisitos adicionais de permissão são especificados em cada seção baseada em tarefa a seguir.
Criar 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.
Observação
Para obter instruções mais detalhadas, consulte Criar um aplicativo conectado na documentação do Salesforce Data cloud.
Para criar um aplicativo conectado ao Salesforce, faça o seguinte:
No canto superior direito do Data cloud, clique em Setup.
Em Platform Tools, clique em Apps > App Manager.
Clique em New Connected App (Novo aplicativo conectado).
Digite um nome e um endereço de contato email.
Ativar as configurações do OAuth:
Digite 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 SQL para criar a conexão Databricks e o catálogo externo no próximo passo, 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 com o Databricks e o catálogo externo. Databricks recomenda o uso do Catalog Explorer porque ele exige menos passos manuais do que outros métodos.Adicione os seguintes escopos:
Acesse todos os dados cloud API recurso(cdp_api)
Gerenciar dados do usuário via APIs (api)
Realizar consultas ANSI SQL nos dados do Data cloud (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. O senhor 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
Uma conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, o senhor pode usar o Catalog Explorer ou o comando CREATE CONNECTION
SQL em um Databricks Notebook ou o editor de consultas Databricks SQL.
Observação
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
.
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 cloud.
(Opcional) Adicione um comentário.
Na página Autenticação, insira as seguintes propriedades de conexão para seu Salesforce Data Cloud:
(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) Será solicitado que o senhor faça login no Salesforce Data cloud usando suas credenciais 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 Create connection (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.
(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. comece a digitar um diretor na caixa de texto e, em seguida, clique 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. comece a digitar um diretor na caixa de texto e, em seguida, clique 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
BROWSE
de default.Selecione Leitor de dados no menu suspenso para conceder privilégios
read
em objetos no catálogo.Selecione Editor de dados no menu suspenso para conceder os privilégios
read
emodify
aos objetos no catálogo.Selecione manualmente os privilégios a serem concedidos.
Clique em Conceder.
Clique em Avançar.
Na página Metadata (Metadados ), especifique as tags governadas par key-value.
(Opcional) Adicione um comentário.
Clique em Salvar.
Databricks recomenda o uso do Catalog Explorer para criar a conexão e o catálogo externo porque ele exige menos passos 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 o senhor usar o Catalog Explorer.
Gerar o verificador de código PKCE e códigos de desafio de código. O senhor pode fazer isso usando uma ferramenta on-line, como https://tonyxu-io.github.io/pkce-generator/ ou executando o seguinte script 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 seguinte URL e autentique-se com suas credenciais do Salesforce para obter o
authorization_code
(substitua<client_id>
e<code_challenge>
por 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 por URL é visível no URL redirecionado.
Execute o seguinte em um Notebook ou no editor de consultas Databricks SQL:
CREATE 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:
CREATE 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.
Criar um catálogo externo
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. Para criar um catálogo externo, o senhor usa 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. 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.
Observação
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
no metastore e a propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG
na conexão.
Em seu site Databricks workspace, clique em Catalog para abrir o Catalog Explorer.
No canto superior direito, clique em Create Catalog (Criar catálogo).
Insira as seguintes propriedades para o catálogo do Salesforce Data cloud.
Nome do catálogo: um nome de fácil utilização 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 parênteses 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
.
Flexões com apoio
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
Quando o senhor lê do Salesforce Data cloud para Spark, os tipos de dados são mapeados da seguinte forma:
Dados do Salesforce cloud type |
Spark tipo |
---|---|
Boolean |
BooleanType |
Data |
DateType |
Data e hora |
timestampType |
email, Phone, Text, Url |
StringType |
Número, porcentagem |
DecimalType(38, 18) |
Outros recursos
A lakehouse Federation não oferece suporte a conexões somente leitura com o Salesforce ventas Cloud, mas o LakeFlow Connect permite que o senhor ingira dados do Salesforce ventas Cloud em um Databricks lakehouse. Consulte Ingerir dados do Salesforce.