Requêtes fédérées (Fédération Lakehouse)

S’applique à :coche marquée oui Databricks SQL coche marquée oui Databricks Runtime 13.3 LTS et versions ultérieures cochée oui Unity Catalog uniquement

La fédération de requêtes permet à Azure Databricks d’exécuter des requêtes sur des données fournies par d’autres metastores Azure Databricks ainsi que de nombreux systèmes de gestion de base de données tiers (SGBD), tels que PostgreSQL, mySQL et Snowflake.

Pour interroger des données à partir d’un autre système, vous devez :

  1. Créer une connexion étrangère. Cela inscrit le serveur fédéré spécifique auprès d’Unity Catalog et établit des moyens de communication avec lui, tels que l’URL, le port et les informations d’identification utilisés.
  2. Inscrire des catalogues étrangers à partir du serveur fédéré avec Unity Catalog
  3. Accorder l’accès aux utilisateurs aux catalogues étrangers. Cela peut être effectué au niveau du catalogue, du schéma ou du tableau, comme vous le feriez avec les sécurisables standard.

Vous pouvez maintenant émettre des requêtes sur les différentes relations locales et étrangères.

Connexion étrangère

Une connexion étrangère est un objet sécurisable Unity Catalog qui identifie un serveur étranger. Dans le cadre de CREATE CONNECTION, vous spécifiez l’URL où le serveur est accessible.

Vous devez également fournir des options telles que le nom d’utilisateur et le mot de passe ou toute autre authentification acceptée, que Azure Databricks utilisera pour communiquer.

Catalogue étranger

Avec une connexion étrangère qui prend en charge les espaces de noms à trois niveaux (catalog/database.schema.table), vous pouvez inscrire des catalogues entiers auprès d’Unity Catalog à l’aide de la commande CREATE FOREIGN CATALOG . Azure Databricks maintient la définition des schémas du catalogue et leurs relations synchronisées avec la source étrangère.

Exemples

-- Create a postgresql connection
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user 'postgresql_user',
       password 'password123');

-- Alternatively create a postgresql connection with secret scope
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user secret('secrets.r.us', 'postgresUser'),
       password secret('secrets.r.us', 'postgresPassword'));

-- Expose the "postgresdb" database with schemas and tables postgresql_user can access.
> CREATE FOREIGN CATALOG postgresql_catalog
    USING CONNECTION postgresql_connection
    OPTIONS (database 'postgresdb');

-- Execute a query across tables in the above catalog, schema, and table.
> SELECT * FROM postgresql_catalog.a_schema.table1
  UNION ALL
  SELECT * FROM default.postgresql_schema.table2
  UNION ALL
  SELECT * FROM default.postgresql.mytable
  UNION ALL
  SELECT local_table;
  ...