Ejecución de consultas federadas en Salesforce Data Cloud
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 obtener 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 privilegioCREATE 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:
- En la esquina superior derecha de Data Cloud, haga clic en Configuración.
- En Herramientas de la plataforma, haga clic en Aplicaciones > Administrador de aplicaciones.
- Haga clic en Nueva aplicación conectada.
- Escriba un nombre y una dirección de correo electrónico de contacto.
- Habilite Configuración de OAuth:
- 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
. - (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. - 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)
- Haga clic en Save(Guardar).
- Haga clic en Continue.
- Escriba la URL de devolución de llamada, con el siguiente formato:
- 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.
- 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.
Nota:
También puede usar la API REST de Databricks o la CLI de Databricks para crear una conexión. Vea POST/api/2.1/unity-catalog/connections y Comandos de Unity Catalog.
Permisos necesarios: administrador del metastore o usuario con el privilegio CREATE CONNECTION
.
Explorador de catálogo
- En el área de trabajo de Azure Databricks, haga clic en Catálogo.
- En el panel izquierdo, expanda el menú Datos externos y seleccione Conexiones.
- Haga clic en Crear conexión.
- Escriba un Nombre de conexión descriptivo.
- Seleccione un tipo de conexión de Salesforce Data Cloud.
- 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
- Tipo de autenticación:
- Haga clic en Iniciar sesión con Salesforce.
- (OAuth) Se le pedirá que inicie sesión en Salesforce Data Cloud con sus credenciales de inicio de sesión único.
- 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
. - (Opcional) Agregue un comentario.
- 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.
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}\"")
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.
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.
Nota:
También puede usar la API de REST de Databricks o la CLI de Databricks para crear un catálogo. Vea POST /api/2.1/unity-catalog/catalogs y Comandos de Unity Catalog.
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
- En el área de trabajo de Azure Databricks, haga clic en Catálogo para abrir el Explorador de catálogos.
- En la esquina superior derecha, haga clic en Crear catálogo.
- 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.
- 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.