Partager via


Exécuter des requêtes fédérées sur Salesforce Data 360

Cette page explique comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur des données Salesforce Data 360 qui ne sont pas gérées par Azure Databricks. Pour en savoir plus sur lakehouse Federation, consultez Qu’est-ce que la Fédération Lakehouse ?

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 Azure Databricks Unity Catalog :

  • Connexion à votre base de données Salesforce Data 360.
  • Catalogue étranger qui met en miroir votre base de données Salesforce Data 360 dans le catalogue Unity afin de pouvoir utiliser la syntaxe de requête du catalogue Unity et les outils de gouvernance des données pour gérer l’accès utilisateur Azure Databricks à la base de données.

Quel connecteur Salesforce dois-je utiliser ?

Databricks offre plusieurs connecteurs pour Salesforce. Il existe deux connecteurs de copie zéro : le connecteur de partage de fichiers Salesforce Data 360 (anciennement Data Cloud) et le connecteur de fédération des requêtes Salesforce Data 360. Celles-ci vous permettent d’interroger des données dans Salesforce Data 360 sans les déplacer. Il existe également un connecteur d’ingestion Salesforce qui copie les données de différents produits Salesforce, notamment Salesforce Data 360 et Salesforce Sales Cloud.

Le tableau suivant résume les différences entre les connecteurs Salesforce dans Databricks :

Connecteur Cas d’utilisation 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 les API Salesforce Data-as-a-Service (DaaS) pour lire les données directement dans l’emplacement de stockage d’objets cloud sous-jacent. Les requêtes sont exécutées sur le calcul Databricks sans utiliser le protocole JDBC.
Par rapport à la fédération de requêtes, 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 de fichiers à partir de plusieurs sources de données et de meilleures fonctionnalités pushdown. Consultez Fédération Lakehouse pour le partage de fichiers Salesforce Data 360.
Données Salesforce 360
Fédération de requêtes Salesforce Data 360 Lorsque vous utilisez le connecteur de fédération de requêtes Salesforce Data 360 dans Lakehouse Federation, Databricks utilise JDBC pour se connecter aux données sources et envoyer des requêtes vers le bas dans Salesforce. Consultez Exécuter des requêtes fédérées sur Salesforce Data 360. Données Salesforce 360
Ingestion Salesforce Le connecteur d’ingestion Salesforce dans Lakeflow Connect vous permet de créer des pipelines d’ingestion entièrement managés à partir de données Salesforce Platform. Ce connecteur optimise la valeur en tirant parti non seulement des données CDP, mais également des données CRM dans la plateforme Data Intelligence. Consultez l'ingestion de données depuis Salesforce. Consultez quels produits Salesforce prend-il en charge le connecteur d’ingestion Salesforce ?

Avant de commencer

Conditions requises pour l’espace de travail :

  • Espace de travail activé pour Unity Catalog.

Voici les exigences de calcul à respecter :

  • Connectivité réseau de votre ressource de calcul aux systèmes de base de données cibles. Consultez l’article Recommandations de mise en réseau pour Lakehouse Federation.
  • Le calcul Azure Databricks doit utiliser Databricks Runtime 15.2 ou version ultérieure et le mode d’accès Standard ou Dédié .
  • Les entrepôts SQL doivent être pro ou serverless et doivent utiliser la version 2024.30 ou ultérieure.

Autorisations requises :

  • Pour créer une connexion, vous devez être un administrateur de metastore ou un utilisateur disposant du privilège CREATE CONNECTION sur le metastore Unity Catalog attaché à l’espace de travail.
  • Pour créer un catalogue étranger, vous devez disposer de l’autorisation CREATE CATALOG sur le metastore et être le propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG sur la connexion.

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’API et de protocoles standard. Cette section explique comment créer une application connectée à l’aide de l’authentification unique pour permettre à Databricks de s’authentifier auprès de Salesforce.

Remarque

Pour obtenir des instructions plus détaillées, voir Créer une application connectée dans la documentation Salesforce Data 360.

Pour créer une application connectée Salesforce, suivez les étapes suivantes :

  1. En haut à droite de Data 360, cliquez sur Configuration.
  2. Sous Outils de plateforme, cliquez sur Apps >Gestionnaire d’apps.
  3. Cliquez sur Nouvelle application connectée.
  4. Entrez un nom et une adresse e-mail de contact.
  5. Activez les paramètres OAuth :
    1. Entrez 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.
    2. (Facultatif) Si vous envisagez d’utiliser SQL pour créer la connexion Azure Databricks et le catalogue étranger à l’étape suivante, votre application connectée Salesforce doit également prendre en charge l’URL de redirection https://login.salesforce.com/services/oauth2/success. Cela n’est pas nécessaire si vous envisagez d’utiliser l’Explorateur de catalogues pour créer la connexion Azure Databricks et le catalogue étranger. Databricks recommande d’utiliser l’Explorateur de catalogues, car cela nécessite moins d’étapes manuelles que les autres méthodes.
    3. Ajoutez les étendues suivantes :
      • Accéder à toutes les ressources d’API Data 360 (cdp_api)
      • Gérer les données utilisateur via des API (api)
      • Effectuer des requêtes ANSI SQL sur les données data 360 (cdp_query_api)
      • Effectuer des requêtes à tout moment (refresh_token, offline_access)
    4. Cliquez sur Enregistrer.
    5. Cliquez sur Continuer.
  6. Dans la page Vue d’ensemble de l’application connectée , cliquez sur Gérer les détails du consommateur. Vous serez invité à vous authentifier.
  7. 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éez une connexion Azure Databricks.

Créer une connexion Azure Databricks

Une connexion spécifie un chemin d’accès et des informations d’identification pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser l’Explorateur de catalogues ou la commande SQL CREATE CONNECTION dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks.

Remarque

Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer une connexion. Consultez POST /api/2.1/unity-catalog/connections et Commandes Unity Catalog.

Autorisations requises : administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION.

Explorateur de catalogues

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue.

  2. En haut du volet Catalogue, cliquez sur l’icône Ajouter ou icône PlusAjouter, puis sélectionnez Ajouter une connexion dans le menu.

    Sinon, dans la page Accès rapide, cliquez sur le bouton Données externes >, accédez à l’onglet Connexions, puis cliquez sur Créer une connexion.

  3. Dans la page de Informations de base de connexion de l’assistant Configurer la connexion, entrez un Nom de connexion convivial.

  4. Sélectionnez un type de connexion de Salesforce Data 360.

  5. (Facultatif) Ajoutez un commentaire.

  6. Dans la page Authentification , entrez les propriétés de connexion suivantes pour vos données Salesforce 360 :

    • (Facultatif) Sélectionnez Est bac à sable.
    • ID client : clé de consommateur d’application connectée Salesforce.
    • Secret client : secret consommateur de l’application connectée Salesforce.
    • Étendue du client : cdp_api api cdp_query_api refresh_token offline_access
  7. Cliquez sur Se connecter avec Salesforce.

  8. (OAuth) Vous êtes invité à vous connecter à Salesforce Data 360 à l’aide de vos informations d’identification d’authentification unique.

  9. Une fois la connexion réussie, vous êtes redirigé vers l'Assistant de configuration de la connexion Databricks. Le bouton Se connecter avec Salesforce a été remplacé par un Successfully authorized message.

  10. Cliquez sur Create connection (Créer la connexion).

  11. Sur la page Informations de base du catalogue, entrez 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 interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et Unity Catalog.

  12. Entrez l’espace de données Salesforce.

  13. (Facultatif) Cliquez sur Tester la connexion pour vérifier qu’elle fonctionne.

  14. Cliquez sur Créer un catalogue.

  15. Dans la page Access, sélectionnez les espaces de travail dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les espaces de travail ont l’accès, ou cliquer sur Affecter aux espaces de travail, sélectionner les espaces de travail, puis cliquer sur Attribuer.

  16. Changez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.

  17. Accordez des privilèges sur le catalogue. Cliquez sur Octroyer :

    1. Spécifiez les Principaux qui auront accès aux objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.
    2. Sélectionnez les Préréglages de privilège à accorder pour chaque bénéficiaire. Tous les utilisateurs d'un compte reçoivent BROWSE par défaut.
      • Sélectionnez Lecteur de données dans le menu déroulant pour accorder des read privilèges sur les objets du catalogue.
      • Sélectionnez Éditeur de données dans le menu déroulant pour accorder read et modify privilèges sur les objets du catalogue.
      • Sélectionnez manuellement les privilèges à accorder.
    3. Cliquez sur Octroyer.
  18. Cliquez sur Suivant.

  19. Dans la page Métadonnées, spécifiez des paires clé-valeur pour les balises. Pour plus d’informations, consultez Appliquer des étiquettes aux objets sécurisables du catalogue Unity.

  20. (Facultatif) Ajoutez un commentaire.

  21. Cliquez sur Enregistrer.

SQL

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 les autres méthodes.

Si vous envisagez d’utiliser SQL pour créer la connexion Azure Databricks et le catalogue étranger, votre application connectée Salesforce doit prendre en charge l’URL de redirection https://login.salesforce.com/services/oauth2/success. Cela n’est pas nécessaire si vous utilisez l’Explorateur de catalogues.

  1. Générer des codes de vérificateur de code et de test de code PKCE. Pour ce faire, vous pouvez utiliser un outil en ligne tel que https://tonyxu-io.github.io/pkce-generator/, ou exécuter le script Python suivant :

    %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. Visitez l’URL suivante et authentifiez-vous avec vos informations d’identification 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.

  3. Exécutez ce qui suit dans un notebook ou dans l’éditeur de requête SQL Databricks :

    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 vous recommande d’utiliser des secrets Azure Databricks au lieu de chaînes de texte en clair pour les valeurs sensibles telles que les informations d’identification. Par exemple :

    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"
      );
    

    Pour obtenir des informations sur la configuration des secrets, consultez l’article Gestion des secrets.

Créer un catalogue étranger

Remarque

Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création du catalogue étranger 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 interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et 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 étranger, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE FOREIGN CATALOG dans un notebook Azure Databricks ou dans l’Éditeur de requête SQL. Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer un catalogue. Consultez POST /api/2.1/unity-catalog/catalogs et les commandes du catalogue Unity.

Autorisations requises : autorisation CREATE CATALOG sur le metastore, et être propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG sur la connexion.

Explorateur de catalogues

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue pour ouvrir l’Explorateur de catalogues.
  2. En haut à droite, cliquez sur Créer un catalogue.
  3. Entrez 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.
  4. Cliquez sur Créer.

SQL

Exécutez la commande SQL suivante dans un notebook ou dans l’Éditeur de requête SQL. Les éléments entre chevrons sont optionnels.

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

Les pushdowns suivants sont pris en charge :

  • Filtres
  • Prévisions
  • Limite
  • Agrégats
  • Décalage
  • Caster
  • Contient, Commence par, Se termine par

Mappages de types de données

Lorsque vous lisez Salesforce Data 360 vers Spark, les types de données sont mappés comme suit :

Salesforce Data 360 de type Type Spark
booléen Type Booléen
Date DateType
Date et heure TimestampType
E-mail, téléphone, texte, URL StringType
Nombre, pourcentage DecimalType(38, 18)

Limites

  • 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 ont des lettres majuscules sur Salesforce Data 360. Par exemple, MyTable n’est pas pris en charge.