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égio CREATE 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:

  1. No canto superior direito do Data cloud, clique em Setup.

  2. Em Platform Tools, clique em Apps > App Manager.

  3. Clique em New Connected App (Novo aplicativo conectado).

  4. Digite um nome e um endereço de contato email.

  5. Ativar as configurações do OAuth:

    1. 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.

    2. (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.

    3. 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)

    4. Clique em Salvar.

    5. Clique em "Continuar".

  6. Na página de visão geral do Connected App, clique em gerenciar Consumer Details. O senhor será solicitado a se autenticar.

  7. 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.

  1. Em seu site Databricks workspace, clique em Ícone do catálogo Catalog.

  2. No painel esquerdo, expanda o menu External Data (Dados externos ) e selecione Connections (Conexões).

  3. Clique em Create connection (Criar conexão).

  4. Digite um nome de conexão fácil de usar.

  5. Selecione um tipo de conexão do Salesforce Data cloud.

  6. Insira as seguintes propriedades de conexão para os dados do Salesforce cloud.

    • Tipo de autenticação: OAuth

    • É sandbox false

    • (OAuth) Segredo do cliente: segredo do consumidor do aplicativo conectado ao Salesforce

    • (OAuth) ID do cliente: Consumidor do aplicativo conectado ao Salesforce key

    • (OAuth) Escopo do cliente: cdp_api api cdp_query_api refresh_token offline_access

  7. Clique em log in com o Salesforce.

  8. (OAuth) Será solicitado que o senhor faça login no Salesforce Data cloud usando suas credenciais SSO.

  9. Após o login bem-sucedido, o senhor será direcionado de volta à página Databricks Create Connection. O botão log in with Salesforce foi substituído por uma mensagem Successfully authorized.

  10. (Opcional) Adicione um comentário.

  11. Clique em Criar.

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.

  1. 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}\"")
    
  2. 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.

  3. 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 Databricks Notebook ou o editor de consultas SQL.

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.

  1. Em seu site Databricks workspace, clique em Ícone do catálogo Catalog para abrir o Catalog Explorer.

  2. No canto superior direito, clique em Create Catalog (Criar catálogo).

  3. 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.

  4. 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)

Limitações

  • Somente um Salesforce Data Space por catálogo Databricks é suportado.