TWORZENIE ZMATERIALIZOWANEGO WIDOKU

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej. Aby zarejestrować się w celu uzyskania dostępu, wypełnij ten formularz.

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 ]
  [ table_constraints ]
  [ view_clauses ]
  AS query

column_list
   ( { column_alias [ COMMENT column_comment | column_constraint ] [...] } [, ...] [ , table_constraint ] [...])

table_constraints
   ( table_constraint [, ...] )

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

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_alias

      Aliasy kolumn muszą być unikatowe.

    • column_comment

      Opcjonalny STRING literał opisujący alias kolumny.

    • column_constraint

      Ważne

      Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

      Dodaje informacyjne ograniczenie klucza podstawowego lub informacyjnego klucza obcego do kolumny w zmaterializowanym widoku. Ograniczenia nie są obsługiwane w przypadku zmaterializowanych widoków w wykazie hive_metastore .

  • table_constraint

    Ważne

    Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

    Dodaje informacyjny klucz podstawowy lub informacyjne ograniczenia klucza obcego do zmaterializowanego widoku. Ograniczenia nie są obsługiwane w przypadku zmaterializowanych widoków w wykazie hive-metastore .

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

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

Tylko właściciel może REFRESH 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.

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.

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 column constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    member_id NOT NULL PRIMARY KEY,
    full_name,
    movie_title
  )
  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 a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    member_id NOT NULL,
    full_name,
    movie_title,
    CONSTRAINT movie_pk PRIMARY KEY(member_id)
  )
  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 a materialized view without column list
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
    CONSTRAINT movie_pk PRIMARY KEY(member_id)
  )
  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;