Kueri gabungan (Federasi Lakehouse)

Berlaku untuk:ditandai ya Databricks SQL ditandai ya Databricks Runtime 13.3 LTS ke atas ditandai ya Hanya Unity Catalog

Federasi kueri memungkinkan Azure Databricks untuk 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:

  1. Buat koneksi luar negeri. Ini mendaftarkan server federasi tertentu dengan Unity Catalog dan menetapkan sarana untuk berkomunikasi dengannya, seperti URL, port, dan kredensial yang digunakan.
  2. Mendaftarkan katalog asing dari server federasi dengan Unity Catalog
  3. Berikan akses pengguna ke katalog asing. Ini dapat dilakukan di tingkat katalog, skema, atau tabel seperti yang Anda lakukan dengan objek keamanan biasa.

Anda sekarang dapat melakukan kueri pada berbagai relasi lokal dan internasional.

Koneksi asing

Koneksi asing adalah objek yang dapat diamankan dalam Unity Catalog yang berfungsi untuk 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;
  ...