Partage via


Exécuter des requêtes fédérées sur Microsoft SQL Server

Cet article explique comment set Lakehouse Federation pour exécuter des requêtes fédérées sur des données SQL Server non gérées par Azure Databricks. Pour en savoir plus sur Lakehouse Federation, consultez l’article Qu’est-ce que Lakehouse Federation ?.

Pour vous connecter à votre base de données SQL Server à l’aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Azure Databricks Unity Catalog :

  • Une connexion à votre base de données SQL Server.
  • Un étranger catalogqui reflète votre base de données SQL Server dans Unity Catalog afin que vous puissiez utiliser la syntaxe de requête et les outils de gouvernance des données Unity Catalog pour gérer l’accès utilisateur Azure Databricks à la base de données.

Lakehouse Federation prend en charge SQL Server, Azure SQL Database et Azure SQL Managed Instance.

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 dans Azure Databricks doit utiliser Databricks Runtime 13.3 LTS ou une version ultérieure, et le mode d'accès partagé ou le mode d'accès utilisateur unique .
  • Les entrepôts SQL doivent être pro ou serverless et doivent utiliser la version 2023.40 ou ultérieure.

Autorisations requises :

  • Pour créer une connexion, vous devez être administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION sur le metastore Unity Catalog attaché à l’espace de travail.
  • Pour créer une catalogétrangère, 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.

  • Si vous prévoyez de vous authentifier en utilisant OAuth, inscrivez une application dans Microsoft Entra ID pour Azure Databricks. Pour plus d’informations, consultez la section suivante.

(Facultatif) Inscrire une application dans Microsoft Entra ID pour Azure Databricks

Si vous souhaitez vous authentifier en utilisant OAuth, suivez cette étape avant de créer une connexion SQL Server. Pour vous authentifier à l’aide d’un nom d’utilisateur et d’un mot de passe, ignorez cette section.

  1. Connectez-vous au portail Azure.
  2. Dans la navigation de gauche, cliquez sur Microsoft Entra ID.
  3. Cliquez sur Inscriptions des applications.
  4. Cliquez sur Nouvelle inscription. Entrez un nom pour la nouvelle application et set l’URI de redirection vers https://<workspace-url>/login/oauth/azure.html.
  5. Cliquez sur S'inscrire.
  6. Dans la zone Essentials, copiez et stockez l’ID d’application (client). Vous utiliserez cette valeur pour configurer l’application.
  7. Cliquez sur Certificats et secrets.
  8. Sous l’onglet Clés secrètes client, cliquez sur Nouvelle clé secrète client.
  9. Entrez une description pour le secret et une expiration (le paramètre par défaut est de 180 jours).
  10. Cliquez sur Ajouter.
  11. Copiez la valeur générée pour la clé secrète client.
  12. Cliquez sur Autorisations d’API.
  13. Cliquez sur Ajouter une autorisation.
  14. Select Azure SQL Database, puis cliquez sur user_impersonation sous autorisations déléguées.
  15. Cliquez sur Ajouter des autorisations.

Créer une connexion

Une connexion spécifie un chemin d’accès et credentials 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 Azure Databricks ou l’éditeur de requête Databricks SQL.

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 Catalog

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône CatalogCatalog.

  2. En haut du volet Catalog, cliquez sur l’icône Ajouter ou icône PlusAjouter l'icône et selectAjouter une connexion dans le menu.

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

  3. Dans la page des bases de la connexion de l’Assistant de configurationSet, entrez un nom de connexion convivial.

  4. Select Un type de connexion de SQL Server.

  5. Select Un type d’authentification de OAuth ou nom d’utilisateur et mot de passe (authentification de base).

  6. (Facultatif) Ajoutez un commentaire.

  7. Cliquez sur Suivant.

  8. Dans la page Authentification, entrez les propriétés de connexion suivantes pour votre instance SQL Server. Les propriétés spécifiques à la méthode d’authentification que vous avez sélectionnée sont précédées de la Auth type entre parenthèses.

    • Hôte : votre serveur SQL.
    • (Authentification de base) Port
    • (Authentification de base) trustServerCertificate : la valeur par défaut est false. Quand set à true, la couche de transport utilise SSL pour chiffrer le canal et contourner la chaîne de certificats pour valider l’approbation. Laissez ce set à la valeur par défaut, sauf si vous avez un besoin spécifique d’outrepasser la validation de confiance.
    • (Authentification de base) Utilisateur
    • (Authentification de base) Mot de passe
    • (OAuth) Point de terminaison d’autorisation : votre point de terminaison d’autorisation Azure Entra au format https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize.
    • (OAuth) ID client de l’application que vous avez créée.
    • (OAuth) Clé secrète client de la clé secrète client que vous avez créée.
    • (OAuth) étendue OAuth: entrez la valeur suivante sans modification : https://database.windows.net/.default offline_access.
    • (OAuth) Cliquez sur se connecter avec l’ID Azure Entra. Entrez votre nom d’utilisateur et votre mot de passe. Une fois que vous êtes redirigé vers la page Authentification, le code d’autorisation est renseigné dans l’interface utilisateur.
  9. Cliquez sur Créer une connexion.

  10. (Authentification de base) Dans la page Détails de connexion, spécifiez les éléments suivants :

    • certificat de serveur d’approbation: cette option est désélectionnée par défaut. Quand elle est sélectionnée, la couche de transport utilise SSL pour chiffrer le canal et contourner la chaîne de certificats pour valider l’approbation. Laissez cette set à la valeur par défaut, sauf si vous avez besoin d’ignorer la validation de confiance.
    • intention d’application: type de charge de travail d’application lors de la connexion à un serveur.
  11. Cliquez sur Suivant.

  12. Dans la Catalogpage de base , entrez un nom pour le catalog étranger. Un catalog étranger met en miroir une base de données dans un système de données externe afin de pouvoir interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et d’Unity Catalog.

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

  14. Cliquez sur Créer catalog.

  15. Dans la page Accès, select les espaces de travail dans lesquels les utilisateurs peuvent accéder au catalog que vous avez créé. Vous pouvez selectTous les espaces de travail ont accès, ou cliquer sur Affecter aux espaces de travail, select les espaces de travail, puis cliquer sur Attribuer.

  16. Modifiez le Propriétaire qui sera en mesure de gérer l’accès à tous les objets du catalog. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.

  17. Grant Privilèges sur le catalog. Cliquez sur Grant:

    1. Spécifiez les Principaux qui auront accès aux objets du catalog. Commencez à taper un élément principal dans la zone de texte, puis cliquez sur cet élément dans les résultats affichés.
    2. Select les Préréglages de privilège à accorder pour grantchaque bénéficiaire. Tous les utilisateurs de compte reçoivent BROWSE par défaut.
      • SelectLecteur de données dans le menu déroulant pour grantread des privilèges sur les objets du catalog.
      • Select Éditeur de données dans le menu déroulant pour grantread et modify privilèges sur les objets dans le catalog.
      • Manuellement select les privilèges pour grant.
    3. Cliquez sur Grant.
  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 balises aux objets sécurisables de Unity Catalog.

  20. (Facultatif) Ajoutez un commentaire.

  21. Cliquez sur Enregistrer.

Remarque

(OAuth) Le point de terminaison OAuth Azure Entra ID doit être accessible à partir des adresses IP du plan de contrôle Azure Databricks. Voir les régions Azure Databricks.

SQL

Exécutez la commande suivante dans un notebook ou dans l’éditeur de requête SQL Databricks.

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Nous vous recommandons d’utiliser des secrets Azure Databricks au lieu de chaînes en texte brut pour des values sensibles comme credentials. Par exemple :

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

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

Créer un catalog étranger

Remarque

Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création de la clé étrangère catalog est incluse et vous pouvez ignorer cette étape.

Un catalog étranger met en miroir une base de données dans un système de données externe afin de pouvoir interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et d’Unity Catalog. Pour créer un catalogétranger, vous utilisez une connexion à la source de données qui a déjà été définie.

Pour créer un catalogétranger, vous pouvez utiliser Explorer Catalog ou la commande SQL CREATE FOREIGN CATALOG dans un notebook Azure Databricks ou dans l'éditeur de requêtes SQL.

Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer un catalog. Consultez POST /api/2.1/unity-catalog/catalogs et les commandes de Unity Catalog.

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 Catalog

  1. Dans votre espace de travail Azure Databricks, cliquez sur Catalog icôneCatalog pour ouvrir Catalogl'Explorateur.

  2. En haut du volet Catalog, cliquez sur l’icône Ajouter ou icône PlusAjouter l'icône et selectAjouter une connexioncatalog dans le menu.

    Il est également possible, à partir de la page d'accès rapide , de cliquer sur le bouton Catalogs, puis sur le bouton Créer catalog.

  3. Suivez les instructions pour créer des catalogs étrangers dans Créer catalogs.

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. Remplacez l’espace réservé values:

  • <catalog-name>: nom du catalog dans Azure Databricks.
  • <connection-name>: objet de connexion qui spécifie la source de données, le chemin et l’accès credentials.
  • <database-name>: nom de la base de données que vous souhaitez mettre en miroir en tant que catalog dans Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Pushdowns pris en charge

Les pushdowns suivants sont pris en charge sur tous les calculs :

  • Filtres
  • Projections
  • Limit
  • Fonctions : partielles, uniquement pour les expressions de filtre. (Fonctions de chaîne, fonctions mathématiques, données, fonctions Time et Timestamp, et autres fonctions diverses, telles que Alias, Cast, SortOrder)

Les pushdowns suivants sont pris en charge sur Databricks Runtime 13.3 LTS et ultérieur, et sur le calcul de l’entrepôt SQL :

  • Agrégats
  • Les opérateurs booléens suivants : =, <, <=, >, >=, <=>
  • Les fonctions mathématiques suivantes (non prises en charge si ANSI est désactivée) : +, -, *, %, /
  • Les divers opérateurs suivants : ^, |, ~
  • Tri, lorsque l’utilisation est limit

Les pushdowns suivants ne sont pas pris en charge :

  • Jointures
  • Fonctions Windows

Mappages de types de données

Quand vous lisez de SQL Server vers Spark, les types de données sont mappés comme suit :

Type SQL Server Type Spark
bigint (non signé), decimal, money, numeric, smallmoney DecimalType
smallint, tinyint ShortType
int IntegerType
bigint (si signé) LongType
real FloatType
float DoubleType
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
text, xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bit BooleanType
Date DateType
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType

* Quand vous lisez à partir de SQL Server, le type SQL Server datetimes est mappé au type Spark TimestampType si preferTimestampNTZ = false (valeur par défaut). Le type SQL Server datetimes est mappé à TimestampNTZType si preferTimestampNTZ = true.