Udostępnij przez


Zapytania federacyjne (Federacja Lakehouse)

Dotyczy:oznaczono jako tak Databricks SQL oznaczono jako tak Databricks Runtime 13.3 LTS lub nowsze oznaczono jako tak tylko Katalog Unity

Federacja zapytań umożliwia usłudze Azure Databricks wykonywanie zapytań względem danych obsługiwanych przez inne magazyny metadanych usługi Azure Databricks, a także wiele systemów zarządzania bazami danych innych firm, takich jak PostgreSQL, mySQL i Snowflake.

Aby wykonać zapytanie o dane z innego systemu, musisz:

  1. Utwórz obce połączenie. Zarejestrowanie określonego serwera federacyjnego w Unity Catalog i ustalenie środków komunikacji z nim, takich jak adres URL, port i poświadczenia.
  2. Zarejestruj katalogi obce z serwera federacyjnego w Unity Catalog
  3. Udziel użytkownikom dostępu do katalogów zagranicznych. Można to zrobić na poziomie katalogu, schematu lub tabeli, jak to robisz z zwykłymi obiektami zabezpieczeń.

Teraz można wysyłać zapytania w różnych relacjach zarówno lokalnych, jak i zagranicznych.

Połączenie zagraniczne

Połączenie zagraniczne to obiekt zabezpieczany w Unity Catalog, który identyfikuje serwer zewnętrzny. W ramach CREATE CONNECTIONnależy określić adres URL, pod którym można uzyskać dostęp do serwera.

Należy również podać opcje, takie jak nazwa użytkownika i hasło lub inne zaakceptowane uwierzytelnianie, którego usługa Azure Databricks będzie używać do komunikowania się.

Wykaz obcy

Biorąc pod uwagę połączenie zewnętrzne, które obsługuje trójpoziomowe przestrzenie nazw (catalog/database.schema.table), można zarejestrować całe katalogi w katalogu Unity przy użyciu polecenia CREATE FOREIGN CATALOG. Usługa Azure Databricks utrzymuje definicję schematów katalogu i ich relacji w synchronizacji z obcym źródłem.

Przykłady

-- 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;
  ...