Aller au contenu principal

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

Cette page décrit comment configurer la Lakehouse Federation pour exécuter des requêtes fédérées sur des données SQL Server 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 SQL Server à 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 SQL Server.
  • Un catalogue étranger qui met en miroir votre base de données SQL Server dans Unity Catalog afin que vous puissiez utiliser la syntaxe de query et les outils de gouvernance des données de Unity Catalog pour gérer l'accès des utilisateurs Databricks à la base de données.

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

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 13.3 LTS ou une version ultérieure et le mode d’accès **Standard** ou **Dédié**.
  • Les SQL warehouses 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 métastore ou un utilisateur disposant du privilège CREATE CONNECTION sur 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ège CREATE CONNECTION par default.
  • Pour créer un catalogue externe, 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. Dans les workspaces activés automatiquement pour Unity Catalog, les administrateurs du workspace disposent du privilège CREATE CATALOG par 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 connexion

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 l'Explorateur de catalogues ou la commande SQL CREATE CONNECTION dans un Notebook Databricks ou l'éditeur de requête Databricks SQL.

remarque

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.

  1. Dans votre workspace Databricks, cliquez sur Icône de données. Catalogue .

  2. En haut du volet **Catalogue**, cliquez sur Icône Ajouter ou plus l'icône **Ajouter** et sélectionnez **Créer une connexion** dans le menu.

  3. Sur la page **Principes de base de la connexion** de l’assistant **Configurer la connexion**, saisissez un **Nom de connexion** convivial.

  4. Sélectionnez un type de connexion SQL Server .

  5. Sélectionnez un Type d'authentification parmi OAuth , OAuth Machine to Machine , ou Nom d'utilisateur et mot de passe (authentification de base).

  6. Ajouter un commentaire (facultatif).

  7. Cliquez sur Suivant .

  8. Sur la page **Authentification**, saisissez 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 Auth type entre parenthèses.

    • Hôte : Votre serveur SQL.
    • (Authentification de base) Port
    • (Authentification de base) trustServerCertificate : default est false. Lorsque la valeur est définie sur true, la couche de transport utilise SSL pour chiffrer le canal et ignore la chaîne de certificats afin de valider la confiance. Laissez ce paramètre sur la valeur default, sauf si vous avez un besoin spécifique de contourner la validation de confiance.
    • (Authentification de base) **userProvidedServerCertificate** : Facultatif. Le certificat public encodé en PEM de votre instance SQL Server. La connexion est toujours chiffrée avec SSL ; ce certificat est utilisé pour vérifier l'identité du serveur pendant l'établissement de liaison TLS, de sorte que le Driver confirme qu'il se connecte à votre serveur prévu plutôt que de lui faire confiance aveuglément. Fournissez ceci lorsque votre serveur présente un certificat d'une autorité de certification privée ou interne qui n'est pas dans le magasin de confiance default. C'est une alternative au réglage de trustServerCertificate à true (qui ignore la validation de l'identité) ; lorsqu'un certificat est fourni, il prévaut sur trustServerCertificate.
    • (Authentification de base) **Utilisateur**
    • (Authentification de base) **Mot de passe**
    • (OAuth) Saisissez les détails de connexion que vous avez recueillis dans Configurer Microsoft Entra ID pour la fédération SQL Server.
  9. Cliquez sur Créer une connexion .

  10. (Authentification de base) Sur la page Détails de la connexion , spécifiez ce qui suit :

    • Certificat de serveur de confiance : cette option est désélectionnée par default. Lorsque cette option est sélectionnée, la couche de transport utilise SSL pour chiffrer le canal de distribution et ignore la chaîne de certificats pour valider la confiance. Laissez ce paramètre sur la valeur default, sauf si vous avez un besoin spécifique de contourner la validation de confiance.
    • Certificat de serveur fourni par l'utilisateur : Facultatif. Le certificat public encodé en PEM de votre instance SQL Server. La connexion est toujours chiffrée avec SSL. Ce certificat est utilisé pour vérifier l'identité du serveur pendant le handshake TLS. Cela confirme que le Driver se connecte au serveur prévu plutôt que de lui faire aveuglément confiance. Fournissez-le lorsque votre serveur présente un certificat d'une autorité de certification privée ou interne qui n'est pas dans le trust store par default. C'est une alternative à la sélection de Certificat de serveur de confiance , qui ignore la validation d'identité. Lorsqu'un certificat est fourni, il prévaut sur Certificat de serveur de confiance .
    • Intention de l'application : Le type de charge de travail de l'application lors de la connexion à un serveur.
  11. Cliquez sur Suivant .

  12. 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.

  13. Cliquez sur **Créer un catalogue**.

  14. 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 .

  15. 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.

  16. Accordez les **Privilèges** sur le catalogue. Cliquez sur Accorder :

    1. 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.

    2. Sélectionnez les **Préréglages de privilèges** à accorder à chaque principal. Tous les utilisateurs du compte se voient accorder BROWSE par default.

      • Sélectionnez Data Reader dans le menu déroulant pour accorder read privilèges sur les objets du catalogue.
      • Sélectionnez **Data Editor** dans le menu déroulant pour accorder read les modify privilèges et sur les objets du catalogue.
      • Sélectionnez manuellement les privilèges à accorder.
    3. Cliquez sur Accorder .

  17. Cliquez sur Suivant .

  18. 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.

  19. Ajouter un commentaire (facultatif).

  20. Cliquez sur Enregistrer .

remarque

(OAuth) Le Endpoint OAuth Azure Entra ID doit être accessible depuis les IP du plan de contrôle Databricks. Voir clouds et régions Databricks.

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 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.

  1. Dans votre Workspace Databricks, cliquez sur Icône de données. **Catalogue** pour ouvrir l’Explorateur de catalogues.

  2. En haut du volet Catalogue , cliquez sur l'icône Icône Ajouter ou plus Ajouter et sélectionnez Ajouter un catalogue dans le menu.

    Autrement, depuis la page Quick access , cliquez sur le bouton Catalogs , puis cliquez sur le bouton Create catalog .

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

Pushdowns pris en charge

Le tableau suivant répertorie les Opérations pushdown prises en charge pour SQL Server, ainsi que le compute requis pour chacune.

Pushdown

Compute pris en charge

Filtres

Pris en charge All compute

Contient, Commence par, Se termine par

Pris en charge All compute

Limite

Pris en charge All compute

Fonctions mathématiques
(partiel, uniquement expressions de filtre)

Pris en charge All compute

Fonctions diverses
(tels que Alias, Cast, SortOrder ; expressions de filtre uniquement)

Pris en charge All compute

Projections

Pris en charge All compute

Fonctions de chaîne
(partiel, uniquement expressions de filtre)

Pris en charge All compute

Agrégats

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs arithmétiques
(tels que +, -, *, %, / ; non pris en charge si ANSI est désactivé)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs booléens
(tels que =, <=>, <, <=, >, >=)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs bit à bit
(&, |, ^ et ~)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Tri, lorsqu'il est utilisé avec une limite

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Jointures

Pris en charge Databricks Runtime 17.2 et versions ultérieures et SQL Warehouse compute. Ce pushdown est en Préversion publique; activez l'option **Pushdown de jointure pour les requêtes fédérées** sur la page **Préversions**.

Fonctions de fenêtre

Non pris en charge Non pris en charge

Pushdown

Compute pris en charge

Filtres

Pris en charge All compute

Contient, Commence par, Se termine par

Pris en charge All compute

Limite

Pris en charge All compute

Fonctions mathématiques
(partiel, uniquement expressions de filtre)

Pris en charge All compute

Fonctions diverses
(tels que Alias, Cast, SortOrder ; expressions de filtre uniquement)

Pris en charge All compute

Projections

Pris en charge All compute

Fonctions de chaîne
(partiel, uniquement expressions de filtre)

Pris en charge All compute

Agrégats

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs arithmétiques
(tels que +, -, *, %, / ; non pris en charge si ANSI est désactivé)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs booléens
(tels que =, <=>, <, <=, >, >=)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Opérateurs bit à bit
(&, |, ^ et ~)

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Tri, lorsqu'il est utilisé avec une limite

Pris en charge Databricks Runtime 13.3 LTS et versions ultérieures, et les SQL Warehouse

Jointures

Pris en charge Databricks Runtime 17.2 et versions ultérieures et SQL Warehouse compute. Ce pushdown est en Préversion publique; activez l'option **Pushdown de jointure pour les requêtes fédérées** sur la page **Préversions**.

Fonctions de fenêtre

Non pris en charge Non pris en charge

Mappages des types de données

Lorsque vous lisez de SQL Server vers Spark, les types de données correspondent comme suit :

Type SQL Server

Type Spark

bigint (non signé), decimal, money, numeric, smallmoney

DecimalType

smallint, tinyint

ShortType

int

IntegerType

bigint (si connecté)

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, datetime2, smalldatetime, time

TimestampType/TimestampNTZType

Type SQL Server

Type Spark

bigint (non signé), decimal, money, numeric, smallmoney

DecimalType

smallint, tinyint

ShortType

int

IntegerType

bigint (si connecté)

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, datetime2, smalldatetime, time

TimestampType/TimestampNTZType

* Lorsque vous lisez à partir de SQL Server, les datetimes de SQL Server sont mappés à Spark TimestampType si preferTimestampNTZ = false (default). SQL Server datetimes sont mappés à TimestampNTZType si preferTimestampNTZ = true.

Ressources supplémentaires