Kueri gabungan (Federasi Lakehouse)
Berlaku untuk: Databricks SQL Databricks Runtime 13.3 LTS dan di atas Unity Catalog saja
Federasi kueri memungkinkan Azure Databricks menjalankan kueri terhadap data yang dilayani oleh metastore Azure Databricks lainnya serta banyak sistem manajemen database pihak ketiga (DBMS) seperti PostgreSQL, mySQL, dan Snowflake.
Untuk mengkueri data dari sistem lain, Anda harus:
- Buat koneksi asing. Ini mendaftarkan server federasi tertentu dengan Unity Catalog dan menetapkan sarana untuk berkomunikasi dengannya, seperti URL, port, dan kredensial yang digunakan.
- Mendaftarkan katalog asing dari server federasi dengan Unity Catalog
- Berikan pengguna akses ke katalog asing. Ini dapat dilakukan di tingkat katalog, skema, atau tabel seperti yang Anda lakukan dengan jaminan reguler.
Anda sekarang dapat mengeluarkan kueri di berbagai hubungan lokal dan asing.
Koneksi asing
Koneksi asing adalah objek yang dapat diamankan Katalog Unity yang mengidentifikasi server asing. Sebagai bagian dari CREATE CONNECTION, Anda menentukan URL tempat server dapat diakses.
Anda juga harus menyediakan opsi seperti nama pengguna dan kata sandi atau autentikasi lain yang diterima, yang akan digunakan Azure Databricks untuk berkomunikasi.
Katalog asing
Mengingat koneksi asing yang mendukung namespace tiga tingkat (catalog/database.schema.table
) Anda dapat mendaftarkan seluruh katalog dengan Katalog Unity menggunakan perintah CREATE FOREIGN CATALOG .
Azure Databricks menjaga definisi skema katalog dan hubungannya sinkron dengan sumber asing.
Contoh
-- 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;
...