Exécuter des queries fédérées sur Salesforce Data 360
Cette page décrit comment configurer la Lakehouse Federation pour exécuter des requêtes fédérées sur les données Salesforce Data 360 qui ne sont pas gérées par Databricks. Pour en savoir plus sur Lakehouse Federation, consultez Connecter aux bases de données et catalogues externes
Pour vous connecter à votre base de données Salesforce Data 360 à l'aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Databricks Unity Catalog (les Workspaces créés après le 8 novembre 2023 disposent déjà d'un metastore Unity Catalog provisionné automatiquement) :
- Une connexion à votre base de données Salesforce Data 360.
- Un catalogue externe qui reflète votre base de données Salesforce Data 360 dans Unity Catalog afin que vous puissiez utiliser la syntaxe de query de Unity Catalog et les outils de gouvernance des données pour gérer l’accès des utilisateurs Databricks à la base de données.
Quel connecteur Salesforce devrais-je utiliser ?
Databricks propose plusieurs connecteurs pour Salesforce. Il existe deux connecteurs zéro copie : le connecteur de partage de fichiers Salesforce Data 360 (anciennement Data Cloud) et le connecteur de fédération de query Salesforce Data 360. Ceux-ci vous permettent de query les données dans Salesforce Data 360 sans les déplacer. Il existe également un connecteur d’ingestion Salesforce qui copie les données de divers produits Salesforce, y compris Salesforce Data 360 et Salesforce Sales Cloud.
Le tableau suivant résume les différences entre les connecteurs Salesforce dans Databricks :
Connecteur | Cas d'usage | Produits Salesforce pris en charge |
|---|---|---|
Partage de fichiers Salesforce Data 360 | Lorsque vous utilisez le connecteur de partage de fichiers Salesforce Data 360 dans Lakehouse Federation, Databricks appelle directement les APIs Salesforce Data-as-a-Service (DaaS) pour lire les données dans l'emplacement de stockage d'objets cloud sous-jacent. Les requêtes sont exécutées sur le compute Databricks sans utiliser le protocole JDBC. Comparé à la fédération de query, le partage de fichiers est idéal pour fédérer une grande quantité de données. Il offre des performances améliorées pour la lecture des fichiers à partir de plusieurs sources de données et de meilleures capacités de pushdown. Voir Lakehouse Federation pour le partage de fichiers Salesforce Data 360. | Salesforce Data 360 |
Fédération de query Salesforce Data 360 | Lorsque vous utilisez le connecteur de fédération de query Salesforce Data 360 dans Lakehouse Federation, Databricks utilise JDBC pour se connecter aux données sources et transmet les queries à Salesforce. Voir Exécuter des queries fédérées sur Salesforce Data 360. | Salesforce Data 360 |
Ingestion Salesforce | Le connecteur d'ingestion Salesforce dans Lakeflow Connect vous permet de créer des pipelines d'ingestion entièrement managées à partir des données de la plateforme Salesforce. Ce connecteur maximise la valeur en exploitant non seulement les données CDP, mais aussi les données CRM dans la Data Intelligence Platform. Consultez Ingérer des données depuis Salesforce. | Consultez Quels produits Salesforce le connecteur d'ingestion Salesforce prend-il en charge ? |
Avant de commencer
Exigences du Workspace :
- Workspace activé pour Unity Catalog. Les Workspace créés après le 8 novembre 2023 sont automatiquement activés pour Unity Catalog, y compris le provisionnement automatique du métastore. Vous n'avez pas besoin de créer manuellement un métastore, à moins que votre workspace ne soit antérieur à l'activation automatique et n'ait pas été activé pour Unity Catalog. Voir Se familiariser avec Unity Catalog.
Compute requis :
- Connectivité réseau de votre ressource de compute vers les systèmes de bases de données cibles. Consultez les recommandations de mise en réseau pour Lakehouse Federation.
- Le compute Databricks doit utiliser Databricks Runtime 15.2 ou version ultérieure et le mode d'accès Standard ou Dédié .
- Les SQL Warehouse doivent être pro ou Serverless et doivent utiliser la version 2024.30 ou supérieure.
Autorisations requises :
- Pour créer une connexion, vous devez être administrateur de métastore ou un utilisateur disposant du privilège
CREATE CONNECTIONsur le métastore Unity Catalog attaché à l'espace de travail. Dans les espaces de travail qui ont été activés automatiquement pour Unity Catalog, les administrateurs d'espace de travail disposent du privilègeCREATE CONNECTIONpar default. - Pour créer un catalogue externe, vous devez disposer de l'autorisation
CREATE CATALOGsur le metastore et être le propriétaire de la connexion ou disposer du privilègeCREATE FOREIGN CATALOGsur la connexion. Dans les workspaces activés automatiquement pour Unity Catalog, les administrateurs du workspace disposent du privilègeCREATE CATALOGpar default.
Des exigences d'autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.
Créer une application connectée Salesforce
Les applications connectées Salesforce permettent à une application externe de s'intégrer à Salesforce à l'aide d'APIs et de protocoles standard. Cette section décrit comment créer une application connectée à l'aide de l'authentification unique (SSO) pour permettre à Databricks de s'authentifier auprès de Salesforce.
Pour des instructions plus détaillées, consultez Créer une application connectée dans la documentation Salesforce Data 360.
Pour créer une application connectée Salesforce, procédez comme suit :
-
Dans le coin supérieur droit de Data 360, cliquez sur Setup .
-
Sous **Outils de la plateforme**, cliquez sur **Applications > Gestionnaire d'applications**.
-
Cliquez sur Nouvelle application connectée .
-
Saisissez un nom et une adresse e-mail de contact .
-
Activer les paramètres **OAuth** :
-
Saisissez l' URL de rappel , au format suivant :
https://<databricks_instance_url>/login/oauth/salesforce.html. Par exemple :https://cust-success.cloud.databricks.com/login/oauth/salesforce.html. -
(Facultatif) Si vous prévoyez d'utiliser SQL pour créer la connexion Databricks et le catalogue externe à l'étape suivante, votre application connectée Salesforce doit également prendre en charge l'URI de redirection
https://login.salesforce.com/services/oauth2/success. Ceci n'est pas nécessaire si vous prévoyez d'utiliser Catalog Explorer pour créer la connexion Databricks et le catalogue étranger. Databricks recommande d'utiliser Catalog Explorer car cela nécessite moins d'étapes manuelles que d'autres méthodes. -
Ajoutez les **Périmètres** suivants :
- Accéder à toutes les ressources de l'API Data 360 ( cdp_api )
- Gérer les données utilisateur via les APIs ( api )
- Effectuez des queries SQL ANSI sur les données Data 360 ( cdp_query_api ).
- Effectuez des requêtes à tout moment (**refresh_token, offline_access**)
-
Cliquez sur Enregistrer .
-
Cliquez sur **Continuer**.
-
-
Sur la page Présentation de l'application connectée , cliquez sur Gérer les détails du consommateur . Vous serez invité(e) à vous authentifier.
-
Une fois l'authentification réussie, la clé consommateur et le secret consommateur sont révélés. Enregistrez ces valeurs. Vous en aurez besoin lorsque vous créerez une connexion Databricks.
Créer une connexion Databricks
Une connexion spécifie un chemin d'accès et des identifiants pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE CONNECTION dans un Notebook Databricks ou l'éditeur de query Databricks SQL.
Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer une connexion. Voir POST /api/2.1/unity-catalog/connections et les commandes Unity Catalog.
Autorisations requises : administrateur du Metastore ou utilisateur disposant du privilège CREATE CONNECTION.
- Catalog Explorer
- SQL
-
Dans votre workspace Databricks, cliquez sur
Catalogue .
-
En haut du volet **Catalogue**, cliquez sur
l'icône **Ajouter** et sélectionnez **Créer une connexion** dans le menu.
-
Sur la page **Principes de base de la connexion** de l’assistant **Configurer la connexion**, saisissez un **Nom de connexion** convivial.
-
Sélectionnez un type de connexion Salesforce Data 360 .
-
Ajouter un commentaire (facultatif).
-
Sur la page **Authentification**, saisissez les propriétés de connexion suivantes pour votre Salesforce Data 360 :
- (Facultatif) Sélectionnez **Est un sandbox**.
- ID client : clé consommateur de l'application connectée Salesforce.
- Secret du client : secret consommateur de l'application connectée Salesforce.
- Champ d'application du client :
cdp_api api cdp_query_api refresh_token offline_access
-
Cliquez sur Se connecter avec Salesforce .
-
(OAuth) Vous êtes invité(e) à vous connecter à Salesforce Data 360 à l'aide de vos identifiants SSO.
-
Après une connexion réussie, vous êtes redirigé vers l'assistant Configurer la connexion de Databricks. Le bouton Se connecter avec Salesforce a été remplacé par un message
Successfully authorized. -
Cliquez sur Créer une connexion .
-
Sur la page **Bases du catalogue**, veuillez saisir un nom pour le catalogue étranger. Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez query et gérer l'accès aux données de cette base de données à l'aide de Databricks et de Unity Catalog.
-
Saisissez l'espace de données Salesforce.
-
(Facultatif) Cliquez sur **Tester la connexion** pour confirmer que cela fonctionne.
-
Cliquez sur **Créer un catalogue**.
-
Sur la page Accès , sélectionnez les workspaces dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les workspaces ont accès , ou cliquer sur Attribuer aux workspaces , sélectionner les workspaces, puis cliquer sur Attribuer .
-
Modifiez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.
-
Accordez les **Privilèges** sur le catalogue. Cliquez sur Accorder :
-
Spécifiez les **principals** qui auront accès aux objets dans le catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.
-
Sélectionnez les **Préréglages de privilèges** à accorder à chaque principal. Tous les utilisateurs du compte se voient accorder
BROWSEpar default.- Sélectionnez Data Reader dans le menu déroulant pour accorder
readprivilèges sur les objets du catalogue. - Sélectionnez **Data Editor** dans le menu déroulant pour accorder
readlesmodifyprivilèges et sur les objets du catalogue. - Sélectionnez manuellement les privilèges à octroyer.
- Sélectionnez Data Reader dans le menu déroulant pour accorder
-
Cliquez sur Accorder .
-
-
Cliquez sur Suivant .
-
Sur la page Métadonnées , spécifiez les paires clé-valeur de balises. Pour plus d'informations, consultez Appliquer des balises aux objets sécurisables d'Unity Catalog.
-
Ajouter un commentaire (facultatif).
-
Cliquez sur Enregistrer .
Databricks recommande d'utiliser l'Explorateur de catalogues pour créer la connexion et le catalogue étranger, car cela nécessite moins d'étapes manuelles que d'autres méthodes.
Si vous prévoyez d'utiliser SQL pour créer la connexion Databricks et le catalogue étranger, votre application connectée Salesforce doit prendre en charge l'URI de redirection https://login.salesforce.com/services/oauth2/success. Ceci n'est pas nécessaire si vous utilisez l'Explorateur de catalogue.
-
Générez le vérificateur de code PKCE et les codes de défi de code. Vous pouvez le faire en utilisant un outil en ligne tel que https://tonyxu-io.github.io/pkce-generator/ ou en exécutant le script Python suivant :
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}\"") -
Consultez l'URL suivante et authentifiez-vous avec vos identifiants Salesforce pour obtenir le
authorization_code(remplacez<client_id>et<code_challenge>par vos paramètres).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 code d'autorisation codé en URL est visible dans l'URL redirigée.
-
Exécutez ce qui suit dans un Notebook ou l'éditeur de query 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 vous recommande d'utiliser les secrets Databricks au lieu de chaînes de texte brut pour les valeurs sensibles comme les identifiants. Par exemple :
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"
);Pour en savoir plus sur la configuration des secrets, consultez la gestion des secrets.
Créer un catalogue étranger
Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création du catalogue externe est incluse et vous pouvez ignorer cette étape.
Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez query et gérer l'accès aux données dans cette base de données à l'aide de Databricks et d'Unity Catalog. Pour créer un catalogue étranger, vous utilisez une connexion à la source de données qui a déjà été définie.
Pour créer un catalogue externe, vous pouvez utiliser l'Explorateur de catalogues ou la commande SQL CREATE FOREIGN CATALOG dans un Notebook Databricks ou l'éditeur de query SQL. Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer un catalogue. Voir POST /api/2.1/unity-catalog/catalogs et commandes Unity Catalog.
Autorisations requises : autorisation CREATE CATALOG sur le metastore et soit la propriété de la connexion, soit le privilège CREATE FOREIGN CATALOG sur la connexion.
- Catalog Explorer
- SQL
-
Dans votre Workspace Databricks, cliquez sur
**Catalogue** pour ouvrir l’Explorateur de catalogues.
-
En haut à droite, cliquez sur Créer un catalogue .
-
Saisissez les propriétés suivantes pour votre catalogue Salesforce Data 360.
- Nom du catalogue : Un nom convivial pour le catalogue.
- Type :
Foreign. - Nom de la connexion : le nom de la connexion sur laquelle le catalogue sera créé.
- Dataspace : un espace de données Salesforce.
-
Cliquez sur Créer .
Exécutez la commande SQL suivante dans un Notebook ou dans l'éditeur de query SQL. Les éléments entre crochets sont facultatifs.
CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');
Remplacez les valeurs suivantes :
<catalog-name>:<connection-name>:<dataspace>: Espace de données Salesforce. Par exemple,default.
Pushdowns pris en charge
Le tableau suivant répertorie les opérations de pushdown prises en charge pour Salesforce Data 360, ainsi que le compute requis pour chacune.
Pushdown | Compute pris en charge |
|---|---|
Agrégats |
|
Opérateurs arithmétiques |
|
Opérateurs booléens |
|
Contient, Commence par, Se termine par |
|
Filtres |
|
Limite |
|
Fonctions mathématiques |
|
Fonctions diverses |
|
Décalage |
|
Projections |
|
Tri, lorsqu'il est utilisé avec une limite |
|
Jointures |
|
Fonctions de fenêtre |
|
Mappages des types de données
Lorsque vous lisez des données de Salesforce Data 360 vers Spark, les types de données se mappent comme suit :
Type de données Salesforce 360 | Type Spark |
|---|---|
|
|
|
|
|
|
|
|
|
|
Limitations
- Un seul espace de données Salesforce par catalogue Databricks est pris en charge.
- Dans Databricks Runtime 16.1 et les versions antérieures, les noms de table et de schéma sensibles à la casse ne sont pas pris en charge. Cela inclut les noms qui contiennent des majuscules sur Salesforce Data 360. Par exemple,
MyTablen'est pas pris en charge.