Compartir a través de


Ejecución de consultas federadas en Salesforce Data Cloud

Importante

Esta característica está en versión preliminar pública.

En este artículo, se describe cómo configurar Lakehouse Federation para ejecutar consultas federadas en datos de Salesforce Data Cloud no administrados por Azure Databricks. Para más información sobre Lakehouse Federation, consulte ¿Qué es Lakehouse Federation?.

Para conectarse a su base de datos de Salesforce Data Cloud mediante Lakehouse Federation, debe crear lo siguiente en el metastore de Unity Catalog de Azure Databricks:

  • Una conexión a la base de datos de Salesforce Data Cloud.
  • Un catálogo externo que refleje la base de datos de Salesforce Data Cloud en Unity Catalog, de modo que pueda usar la sintaxis de consulta y las herramientas de gobernanza de datos de Unity Catalog para administrar el acceso de usuario de Azure Databricks a la base de datos.

Antes de empezar

Requisitos del área de trabajo:

  • Área de trabajo habilitada para Unity Catalog.

Requisitos de proceso:

  • Conectividad de red desde el clúster de Databricks Runtime o el almacén de SQL a los sistemas de base de datos de destino. Consulte Recomendaciones de redes para Lakehouse Federation.
  • Los clústeres de Azure Databricks deben usar Databricks Runtime 15.2 o posterior y el modo de acceso compartido o de usuario único.
  • Los almacenes de SQL deben ser Pro o sin servidor y tienen que utilizar 2024.30 o versiones superiores.

Permisos necesarios:

  • Para crear una conexión, debe ser administrador del metastore o usuario con el privilegio CREATE CONNECTION en el metastore de Unity Catalog adjunto al área de trabajo.
  • Para crear un catálogo externo, debe tener el permiso CREATE CATALOG en el metastore, y ser el propietario de la conexión o tener el privilegio CREATE FOREIGN CATALOG en la conexión.

Los requisitos de permisos adicionales se especifican en cada sección basada en tareas que se indica a continuación.

Creación de una aplicación conectada a Salesforce

Las aplicaciones conectadas a Salesforce permiten que una aplicación externa se integre con Salesforce mediante API y protocolos estándar. En esta sección se describe cómo crear una aplicación conectada mediante SSO para permitir que Databricks se autentique con Salesforce.

Nota:

Para obtener instrucciones más detalladas, consulte Creación de una aplicación conectada en la documentación de Salesforce Data Cloud.

Para crear una aplicación conectada a Salesforce, haga lo siguiente:

  1. En la esquina superior derecha de Data Cloud, haga clic en Configuración.
  2. En Herramientas de la plataforma, haga clic en Aplicaciones > Administrador de aplicaciones.
  3. Haga clic en Nueva aplicación conectada.
  4. Escriba un nombre y una dirección de correo electrónico de contacto.
  5. Habilite Configuración de OAuth:
    1. Escriba la URL de devolución de llamada, con el siguiente formato: https://<databricks_instance_url>/login/oauth/salesforce.html. Por ejemplo: https://cust-success.cloud.databricks.com/login/oauth/salesforce.html.
    2. (Opcional) Si tiene previsto usar SQL para crear la conexión de Azure Databricks y el catálogo externo en el paso siguiente, la aplicación conectada a Salesforce también debe admitir el URI de redireccionamiento https://login.salesforce.com/services/oauth2/success. Esto no es necesario si tiene previsto usar el Explorador de catálogos para crear la conexión de Azure Databricks y el catálogo externo. Databricks recomienda usar el Explorador de catálogos porque requiere menos pasos manuales que otros métodos.
    3. Agregue los siguientes ámbitos:
      • Acceso a todos los recursos de API de Data Cloud (cdp_api)
      • Administración de datos de usuario a través de API (api)
      • Realización de consultas SQL ANSI sobre datos de Data Cloud (cdp_query_api)
      • Realización de solicitudes en cualquier momento (refresh_token, offline_access)
    4. Haga clic en Save(Guardar).
    5. Haga clic en Continue.
  6. En la página de información general de la aplicación conectada, haga clic en Administrar los detalles del consumidor. Se le pedirá que se autentique.
  7. Tras la autenticación correcta, se revelan Clave de consumidor y Secreto de consumidor. Copie estos valores. Los necesitará al crear una conexión de Azure Databricks.

Creación de una conexión de Azure Databricks

Una conexión especifica una ruta de acceso y las credenciales para acceder a un sistema de base de datos externo. Para crear una conexión, puede usar el Explorador de catálogos o el comando SQL CREATE CONNECTION en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: administrador del metastore o usuario con el privilegio CREATE CONNECTION.

Explorador de catálogo

  1. En el área de trabajo de Azure Databricks, haga clic en Icono de catálogo Catálogo.
  2. En el panel izquierdo, expanda el menú Datos externos y seleccione Conexiones.
  3. Haga clic en Crear conexión.
  4. Escriba un Nombre de conexión descriptivo.
  5. Seleccione un tipo de conexión de Salesforce Data Cloud.
  6. Escriba las siguientes propiedades de conexión de su instancia de Salesforce Data Cloud.
    • Tipo de autenticación: OAuth
    • Es espacio aislado false
    • (OAuth) Secreto de cliente: secreto de consumidor de la aplicación conectada a Salesforce
    • (OAuth) Id. de cliente: clave de consumidor de la aplicación conectada a Salesforce
    • (OAuth) ámbito de cliente: cdp_api api cdp_query_api refresh_token offline_access
  7. Haga clic en Iniciar sesión con Salesforce.
  8. (OAuth) Se le pedirá que inicie sesión en Salesforce Data Cloud con sus credenciales de inicio de sesión único.
  9. Después de iniciar sesión correctamente, se le redirigirá a la página Crear conexión de Databricks. El botón Iniciar sesión con Salesforce se ha reemplazado por un mensaje Successfully authorized.
  10. (Opcional) Agregue un comentario.
  11. Haga clic en Crear.

SQL

Databricks recomienda usar el Explorador de catálogos para crear la conexión y el catálogo externo porque requiere menos pasos manuales que otros métodos.

Si tiene previsto usar SQL para crear la conexión de Azure Databricks y el catálogo externo en el paso siguiente, la aplicación conectada a Salesforce debe admitir el URI de redireccionamiento https://login.salesforce.com/services/oauth2/success. Esto no es necesario si usa el Explorador de catálogos.

  1. Genere un comprobador de código PKCE y códigos de desafío de código. Puede hacerlo mediante una herramienta en línea, como https://tonyxu-io.github.io/pkce-generator/ o mediante la ejecución del siguiente script de 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 la siguiente dirección URL y autentíquese con sus credenciales de Salesforce para obtener el authorization_code (reemplace <client_id> y <code_challenge> por sus 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>
    

    Un código de autorización con codificación URL está visible en la dirección URL redirigida.

  3. Ejecute lo siguiente en un cuaderno o en el editor de consultas de 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 recomienda que utilice los secretos de Azure Databricks en lugar de cadenas de texto sin formato para valores confidenciales como las credenciales. Por ejemplo:

    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 obtener más información sobre la configuración de secretos, consulte Administración de secretos.

Creación de un catálogo externo

Un catálogo externo refleja una base de datos en un sistema de datos externo para que pueda consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y Unity Catalog. Para crear un catálogo externo, use una conexión al origen de datos que ya se ha definido.

Para crear un catálogo externo, puede usar Catalog Explorer o el comando SQL CREATE FOREIGN CATALOG en un cuaderno de Azure Databricks o el editor de consultas SQL.

Permisos necesarios: CREATE CATALOG permiso en el metastore y la propiedad de la conexión o el privilegio CREATE FOREIGN CATALOG en la conexión.

Explorador de catálogo

  1. En el área de trabajo de Azure Databricks, haga clic en Icono de catálogo Catálogo para abrir el Explorador de catálogos.
  2. En la esquina superior derecha, haga clic en Crear catálogo.
  3. Escriba las siguientes propiedades de su catálogo de Salesforce Data Cloud.
    • Nombre del catálogo: nombre descriptivo para el catálogo.
    • Tipo: Foreign.
    • Nombre de la conexión: nombre de la conexión en la que se creará el catálogo.
    • Espacio de datos: espacio de datos de Salesforce.
  4. Haga clic en Crear.

SQL

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. Los elementos entre corchetes son opcionales.

CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');

Reemplace los siguientes valores:

  • <catalog-name>:
  • <connection-name>:
  • <dataspace>: espacio de datos de Salesforce. Por ejemplo, default.

Delegaciones admitidas

Se admiten las siguientes delegaciones:

  • Filtros
  • Proyecciones
  • Límite
  • Aggregates (Agregados)
  • Desplazamiento
  • Cast
  • Contains, Startswith, Endswith

Asignaciones de tipo de datos

Al leer de Salesforce Data Cloud a Spark, los tipos de datos se asignan de la siguiente manera:

Tipo de Salesforce Data Cloud Tipo de Spark
Booleano BooleanType
Date DateType
Datetime TimestampType
Correo electrónico, teléfono, texto, dirección URL StringType
Número, porcentaje DecimalType(38, 18)

Limitaciones

  • Solo se admite un espacio de datos de Salesforce por catálogo de Databricks.