Kueri gabungan (Federasi Lakehouse)

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS dan di atas centang ditandai ya 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:

  1. Buat koneksi asing. 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 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;
  ...