Udostępnij za pośrednictwem


TWORZENIE ZMATERIALIZOWANEGO WIDOKU

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Zmaterializowany widok to widok , w którym wstępnie skompilowane wyniki są dostępne dla zapytania i można je zaktualizować w celu odzwierciedlenia zmian w danych wejściowych. Za każdym razem, gdy zmaterializowany widok jest odświeżany, wyniki zapytania są ponownie obliczane w celu odzwierciedlenia zmian w nadrzędnych zestawach danych. Wszystkie zmaterializowane widoki są wspierane przez potok DLT. Widoki zmaterializowane można odświeżać ręcznie, zgodnie z harmonogramem lub planując potok DLT, w którym są zawarte.

Składnia

CREATE MATERIALIZED VIEW [IF NOT EXISTS]
  view_name
  [ column_list ]
  [ view_clauses ]
  AS query

column_list
   ( { column_name [ MASK clause ] [...] } [, ...] )

view_clauses
  { PARTITIONED BY (col [, ...]) |
    COMMENT view_comment |
    TBLPROPERTIES clause |
    SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] |
    WITH { ROW FILTER clause } } [...]

Parametry

  • JEŚLI NIE ISTNIEJE

    Tworzy widok, jeśli nie istnieje. Jeśli widok o tej nazwie już istnieje, CREATE VIEW instrukcja jest ignorowana.

    Możesz określić co najwyżej jeden z IF NOT EXISTS elementów lub OR REFRESH.

  • view_name

    Nazwa nowo utworzonego widoku. W pełni kwalifikowana nazwa widoku musi być unikatowa.

  • column_list

    Opcjonalnie etykietuje kolumny w wyniku zapytania widoku. Jeśli podasz listę kolumn, liczba aliasów kolumn musi być zgodna z liczbą wyrażeń w zapytaniu. Jeśli nie określono listy kolumn, aliasy pochodzą z treści widoku.

    • column_name

      Nazwy kolumn muszą być unikatowe i mapować je na kolumny wyjściowe zapytania.

    • KLAUZULA MASK

      Ważne

      Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

      Dodaje funkcję maski kolumn do anonimowości poufnych danych. Wszystkie przyszłe zapytania z tej kolumny otrzymają wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość i/lub członkostwo w grupach użytkownika wywołującego w celu podjęcia decyzji, czy zredagować wartość.

  • view_clauses

    Opcjonalnie określ partycjonowanie, komentarze, właściwości zdefiniowane przez użytkownika i harmonogram odświeżania dla nowego zmaterializowanego widoku. Każda klauzula podrzędna może być określona tylko raz.

    • PARTYCJONOWANE PRZEZ

      Opcjonalna lista kolumn tabeli do partycjonowania tabeli według.

    • VIEW_COMMENT KOMENTARZ

      Literał STRING opisujący tabelę.

    • TBLPROPERTIES

      Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.

    • SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]

      Jeśli zostanie podana, zaplanuje tabelę przesyłania strumieniowego lub zmaterializowany widok, aby odświeżyć dane przy użyciu danego harmonogramu kronu kwarcowego. Akceptowane są tylko time_zone_values . AT TIME ZONE LOCAL nie jest obsługiwana. Jeśli AT TIME ZONE jest nieobecny, używana jest strefa czasowa sesji. Jeśli AT TIME ZONE jest nieobecny, a strefa czasowa sesji nie jest ustawiona, zostanie zgłoszony błąd. SCHEDULEjest semantycznie równoważne .SCHEDULE REFRESH

      Nie można użyć SCHEDULE składni w definicji potoku delta Live Tables.

    • WITH ROW FILTER, klauzula

      Ważne

      Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

      Dodaje do tabeli funkcję filtru wierszy. Wszystkie przyszłe zapytania z tej tabeli otrzymają podzbiór wierszy, dla których funkcja oblicza wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość i/lub członkostwo w grupach wywoływanego użytkownika w celu podjęcia decyzji, czy filtrować niektóre wiersze.

  • Zapytanie AS

    Zapytanie, które konstruuje widok z tabel podstawowych lub innych widoków.

Wymagane uprawnienia

Użytkownik tworzący zmaterializowany widok (MV) jest właścicielem mv i musi mieć następujące uprawnienia:

  • SELECT uprawnienia do tabel bazowych, do których odwołuje się mv.
  • USE CATALOG uprawnienia w katalogu nadrzędnym i USE SCHEMA uprawnienia w schemacie nadrzędnym.
  • CREATE uprawnienia w schemacie mv.

Aby użytkownik mógł odświeżyć mv, wymaga:

  • USE CATALOG uprawnienia w katalogu nadrzędnym i USE SCHEMA uprawnienia w schemacie nadrzędnym.
  • Własność mv lub REFRESH uprawnienia w mv.
  • Właściciel MV musi mieć SELECT uprawnienia do tabel bazowych, do których odwołuje się mv.

Aby użytkownik mógł wykonywać zapytania dotyczące wzorca MV, wymaga:

  • USE CATALOG uprawnienia w katalogu nadrzędnym i USE SCHEMA uprawnienia w schemacie nadrzędnym.
  • SELECT uprawnienia do zmaterializowanego widoku.

Filtry wierszy i maski kolumn

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Filtry wierszy umożliwiają określenie funkcji, która ma zastosowanie jako filtr za każdym razem, gdy skanowanie tabeli pobiera wiersze. Te filtry zapewniają, że kolejne zapytania zwracają tylko wiersze, dla których predykat filtru daje wartość true.

Maski kolumn umożliwiają maskowanie wartości kolumny za każdym razem, gdy skanowanie tabeli pobiera wiersze. Wszystkie przyszłe zapytania obejmujące tę kolumnę otrzymają wynik oceny funkcji w kolumnie, zastępując oryginalną wartość kolumny.

Aby uzyskać więcej informacji na temat używania filtrów wierszy i masek kolumn, zobacz Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.

Zarządzanie filtrami wierszy i maskami kolumn

Filtry wierszy i maski kolumn w zmaterializowanych widokach należy dodać za pomocą instrukcji CREATE .

Zachowanie

  • Odśwież jako definiuj: gdy REFRESH MATERIALIZED VIEW instrukcja odświeża zmaterializowany widok, funkcje filtrowania wierszy są uruchamiane z prawami definiowanego (jako właściciel tabeli). Oznacza to, że odświeżanie tabeli używa kontekstu zabezpieczeń użytkownika, który utworzył zmaterializowany widok.
  • Zapytanie: Podczas gdy większość filtrów jest uruchamiana z prawami definiowanego, funkcje sprawdzające kontekst użytkownika (takie jak CURRENT_USER i IS_MEMBER) są wyjątkami. Te funkcje działają jako wywołanie. Takie podejście wymusza zabezpieczenia danych specyficzne dla użytkownika i mechanizmy kontroli dostępu na podstawie kontekstu bieżącego użytkownika.
  • Podczas tworzenia zmaterializowanych widoków w tabelach źródłowych zawierających filtry wierszy i maski kolumn odświeżanie zmaterializowanego widoku jest zawsze pełnym odświeżaniem. Pełne odświeżanie ponownie przetwarza wszystkie dane dostępne w źródle przy użyciu najnowszych definicji. Dzięki temu zasady zabezpieczeń w tabelach źródłowych są oceniane i stosowane przy użyciu najbardziej aktualnych danych i definicji.

Wgląd w informacje

INFORMATION_SCHEMAUżyj DESCRIBE EXTENDED, lub Eksploratora wykazu, aby zbadać istniejące filtry wierszy i maski kolumn, które mają zastosowanie do danego zmaterializowanego widoku. Ta funkcja umożliwia użytkownikom przeprowadzanie inspekcji i przeglądania środków dostępu do danych i ochrony w zmaterializowanych widokach.

Ograniczenia

  • Gdy zmaterializowany widok z agregacją w kolumnie obsługującej sum wartość NULL ma ostatnią wartość inną niż NULL usuniętą z tej kolumny , a zatem tylko NULL wartości pozostają w tej kolumnie — wynikowa wartość agregowana widoku zwraca zero zamiast NULL.
  • Odwołanie do kolumny nie wymaga aliasu. Wyrażenia odwołania inne niż kolumny wymagają aliasu, jak w poniższym przykładzie:
    • Dozwolone: SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
    • Niedozwolone: SELECT col1, SUM(col2) FROM t GROUP BY col1
  • Zmaterializowane widoki nie obsługują kolumn tożsamości ani kluczy zastępczych.
  • Zmaterializowane widoki nie obsługują ad hoc OPTIMIZE i VACUUM poleceń. Konserwacja odbywa się automatycznie.
  • Zmaterializowane widoki nie obsługują ograniczeń tabeli, takich jak PRIMARY KEY i FOREIGN KEY.
  • Zmaterializowane widoki nie obsługują oczekiwań dotyczących definiowania ograniczeń jakości danych.

Przykłady

-- Create a materialized view if it doesn't exist
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies
  AS SELECT mo.member_id, mb.full_name, mo.movie_title
       FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;

-- Create and schedule a materialized view to be refreshed daily at midnight.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
  COMMENT 'Daily sales numbers'
  SCHEDULE CRON '0 0 0 * * ? *'
  AS SELECT date AS date, sum(sales) AS sumOfSales
       FROM table1
       GROUP BY date;

-- Create a materialized view with a row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
    id,
    name,
    region,
    ssn MASK catalog.schema.ssn_mask_fn
  )
  WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
  AS SELECT id, name, region, ssn
       FROM employees;