Udostępnij za pomocą


Konfigurowanie zmaterializowanych widoków w usłudze Databricks SQL

W tym artykule opisano sposób konfigurowania zmaterializowanych widoków w usłudze Databricks SQL, w tym kontroli dostępu do wyników. Większość konfiguracji można wykonać podczas tworzenia zmaterializowanego widoku za pomocą CREATE OR REPLACE MATERIALIZED VIEW instrukcji lub po jej utworzeniu z instrukcją ALTER TABLE .

Opisywanie zmaterializowanego widoku

Aby pobrać kolumny i typy danych dla zmaterializowanego widoku, użyj instrukcji DESCRIBE. Aby pobrać kolumny, typy danych i metadane, takie jak właściciel, lokalizacja, czas tworzenia i stan odświeżania dla zmaterializowanego widoku, użyj polecenia DESCRIBE EXTENDED. Aby przesłać instrukcję DESCRIBE , użyj edytora SQL w interfejsie użytkownika usługi Azure Databricks, interfejsie wiersza polecenia SQL usługi Databricks lub interfejsie API SQL usługi Databricks.

Uzyskaj szczegółowe informacje o zmaterializowanych widokach za pomocą Eksploratora Katalogu

Możesz również użyć Eksploratora wykazu , aby wyświetlić szczegóły dotyczące zmaterializowanego widoku.

  1. Kliknij ikonę Dane.Wykaz na pasku bocznym.
  2. W drzewie po lewej stronie w Eksploratorze Katalogów otwórz katalog i wybierz schemat, w którym znajduje się zmaterializowany widok.
  3. Otwórz element Tables w wybranym schemacie i kliknij na zmaterializowany widok.

W tym miejscu możesz użyć kart pod nazwą zmaterializowanego widoku, aby wyświetlić i edytować informacje o zmaterializowanym widoku, w tym:

  • Odśwież stan i harmonogram
  • Zobacz szczegóły przepływu, aby wyświetlić historię odświeżeń, a także szczegółowe dzienniki odświeżania. Kliknij pozycję Zobacz szczegóły odświeżania na karcie Przegląd, aby zobaczyć szczegóły pipelines.
  • Schemat tabeli
  • Przykładowe dane (wymagają aktywnego obliczenia)
  • Permissions
  • Pochodzenie, w tym tabele i potoki, od których zależy ten zmaterializowany widok
  • Szczegółowe informacje o użyciu
  • Monitory utworzone dla tego zmaterializowanego widoku

Istnieje kilka właściwości tabeli, które nie są dostępne w Eksploratorze wykazu. W przypadku tych właściwości lub aby uzyskać informacje programowo, możesz użyć polecenia DESCRIBE EXTENDED.

Aktualizowanie definicji zmaterializowanego widoku

Zapytanie określające zmaterializowany widok jest jego definicją. Aby zmienić definicję zmaterializowanego widoku, zmodyfikuj zapytanie lub utwórz nowe zapytanie CREATE OR REPLACE MATERIALIZED VIEW o tej samej nazwie widoku, a następnie uruchom je. Pełne odświeżanie jest wykonywane w celu zaktualizowania zmaterializowanego widoku i dalsze odświeżenia używają nowej definicji.

Kontrola dostępu do zmaterializowanych widoków

Zmaterializowane widoki obsługują zaawansowane mechanizmy kontroli dostępu do obsługi udostępniania danych, jednocześnie unikając uwidaczniania potencjalnie prywatnych danych. Zmaterializowany właściciel widoku lub użytkownik z MANAGE uprawnieniami może udzielić SELECT uprawnień innym użytkownikom. Użytkownicy z dostępem SELECT do zmaterializowanego widoku nie potrzebują SELECT dostępu do tabel, do których odwołuje się zmaterializowany widok. Ta kontrola dostępu umożliwia udostępnianie danych podczas kontrolowania dostępu do danych bazowych.

Możesz również zmienić właściciela zmaterializowanego widoku.

Udzielanie uprawnień do zmaterializowanego widoku

Aby udzielić dostępu do zmaterializowanego widoku, użyj instrukcjiGRANT :

GRANT <privilege_type> ON <mv_name> TO <principal>;

Privilege_type może być:

  • SELECT — użytkownik może SELECT zmaterializować widok.
  • REFRESH — użytkownik może REFRESH zmaterializować widok. Operacje odświeżania są uruchamiane przy użyciu uprawnień właściciela.

Poniższy przykład tworzy zmaterializowany widok i przyznaje użytkownikom uprawnienia wyboru i odświeżania:

CREATE MATERIALIZED VIEW mv_name AS SELECT * FROM source_table;

-- Grant read-only access:
GRANT SELECT ON mv_name TO read_only_user;

-- Grand read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;

Cofnięcie uprawnień z zmaterializowanego widoku

Aby cofnąć dostęp do zmaterializowanego widoku, użyj instrukcjiREVOKE :

REVOKE privilege_type ON <mv_name> FROM principal;

Gdy uprawnienia SELECT do tabeli źródłowej zostaną cofnięte właścicielowi zmaterializowanego widoku lub innemu użytkownikowi, któremu przyznano uprawnienia MANAGE lub SELECT do zmaterializowanego widoku, lub gdy tabela źródłowa zostanie usunięta, właściciel zmaterializowanego widoku lub użytkownik, któremu udzielono dostępu, nadal może wykonywać zapytania dotyczące zmaterializowanego widoku. Jednak występuje następujące zachowanie:

  • Właściciel zmaterializowanego widoku lub inni, którzy stracili dostęp do tego zmaterializowanego widoku, nie mogą już REFRESH tego widoku, a zmaterializowany widok stanie się nieaktualny.
  • Jeśli jest zautomatyzowane zgodnie z harmonogramem, kolejna zaplanowana REFRESH nie powiedzie się lub nie zostanie uruchomiona.

Poniższy przykład odbiera SELECT uprawnienie dla read_only_user.

REVOKE SELECT ON mv_name FROM read_only_user;

Zmienianie właściciela zmaterializowanego widoku

Użytkownik z uprawnieniami MANAGE do zmaterializowanego widoku zdefiniowanego w usłudze Databricks SQL może ustawić nowego właściciela za pośrednictwem Eksploratora wykazu. Nowy właściciel może być sobą lub jednostką usługi, która posiada rolę użytkownika jednostki usługi.

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę Dane.Wykaz umożliwiający otwarcie Eksploratora wykazu.

  2. Wybierz zmaterializowany widok, który chcesz zaktualizować.

  3. Na prawym pasku bocznym w obszarze Informacje o tym zmaterializowanym widoku znajdź Właściciel i kliknij ikonę ołówka.

    Uwaga / Notatka

    Jeśli zostanie wyświetlony komunikat informujący o zaktualizowaniu właściciela przez zmianę ustawienia Uruchom jako użytkownika w ustawieniach potoku, zmaterializowany widok jest zdefiniowany w potokach deklaratywnych platformy Lakeflow, a nie w usłudze Databricks SQL. Komunikat zawiera link do ustawień potoku, w którym można zmienić użytkownika Uruchom jako .

  4. Wybierz nowego właściciela dla zmaterializowanego widoku.

    Właściciele automatycznie mają MANAGE i SELECT uprawnienia na zmaterializowane widoki, których są właścicielami. Jeśli ustawiasz jednostkę usługi jako właściciela zmaterializowanego widoku, którego jesteś właścicielem, i nie masz jawnie uprawnień SELECT lub MANAGE do zmaterializowanego widoku, ta zmiana spowoduje utratę wszelkiego dostępu do zmaterializowanego widoku. W takim przypadku zostanie wyświetlony monit o jawne podanie tych uprawnień.

    Wybierz opcję Udziel zarządzania i Udziel SELECT uprawnień, aby podać te uprawnienia w obszarze Zapisz.

  5. Kliknij przycisk Zapisz , aby zmienić właściciela.

Właściciel zmaterializowanego widoku jest aktualizowany. Wszystkie przyszłe operacje odświeżania są uruchamiane przy użyciu tożsamości nowego właściciela.

Gdy właściciel utraci uprawnienia do tabel źródłowych

Jeśli zmienisz właściciela, a nowy właściciel nie ma dostępu do tabel źródłowych (lub SELECT uprawnienia zostaną odwołane w podstawowych tabelach źródłowych), użytkownicy nadal będą mogli wykonywać zapytania dotyczące zmaterializowanego widoku. Jednak:

  • Nie mogą zmaterializować widoku REFRESH.
  • Następne zaplanowane odświeżanie zmaterializowanego widoku zakończy się niepowodzeniem.

Utrata dostępu do danych źródłowych uniemożliwia wykonywanie aktualizacji, ale nie powoduje natychmiastowego unieważnienia istniejącego zmaterializowanego widoku pod kątem odczytu.

Ustaw kanał środowiska uruchomieniowego

Zmaterializowane widoki utworzone przy użyciu usługi SQL Warehouse są automatycznie odświeżane przy użyciu potoku. Pipeliny domyślnie używają środowiska uruchomieniowego w current kanale. Zobacz Informacje o wersji potoków deklaratywnych platformy Spark w usłudze Lakeflow i proces aktualizacji wersji, aby dowiedzieć się więcej o procesie wydawania.

Databricks rekomenduje użycie kanału current dla obciążeń produkcyjnych. Nowe funkcje są po raz pierwszy udostępniane w preview kanale. Można ustawić pipeline na kanał wersji zapoznawczej, aby przetestować nowe funkcje, określając preview jako właściwość tabeli. Tę właściwość można określić podczas tworzenia tabeli lub po utworzeniu tabeli przy użyciu instrukcji ALTER.

W poniższym przykładzie kodu pokazano, jak ustawić kanał na podgląd w instrukcji CREATE:

CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
  AS ...

Aby zmienić kanał po utworzeniu, użyj instrukcji ALTER TABLE :

ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');