Requêtes fédérées (Fédération Lakehouse)
S’applique à : Databricks SQL
Databricks Runtime 13.3 LTS et versions ultérieures
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 :
- 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.
- Inscrire des catalogues étrangers à partir du serveur fédéré avec Unity Catalog
- 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;
...