GERÇEKLEŞTİRİLMİŞ GÖRÜNÜM OLUŞTURMA

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL

Önemli

Bu özellik Genel Önizlemededir.

Gerçekleştirilmiş görünüm, sorgu için önceden derlenmiş sonuçların kullanılabildiği ve girişteki değişiklikleri yansıtacak şekilde güncelleştirilebildiği bir görünümdür. Gerçekleştirilmiş görünüm her yenilendiğinde, sorgu sonuçları yukarı akış veri kümelerindeki değişiklikleri yansıtacak şekilde yeniden hesaplanır. Tüm gerçekleştirilmiş görünümler bir DLT işlem hattı tarafından desteklenir. Gerçekleştirilmiş görünümleri el ile, zamanlamaya göre veya içerdikleri DLT işlem hattını zamanlayarak yenileyebilirsiniz.

Sözdizimi

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 ] } [...]

Parametreler

  • YOKSA

    Yoksa görünümü oluşturur. Bu ada göre bir görünüm zaten varsa, CREATE VIEW deyimi yoksayılır.

    veya OR REFRESH'nin IF NOT EXISTS en fazla birini belirtebilirsiniz.

  • view_name

    Yeni oluşturulan görünümün adı. Tam görünüm adı benzersiz olmalıdır.

  • Column_list

    İsteğe bağlı olarak, görünümün sorgu sonucundaki sütunları etiketler. Sütun listesi sağlarsanız, sütun diğer adlarının sayısı sorgudaki ifade sayısıyla eşleşmelidir. Sütun listesi belirtilmezse, diğer adlar görünümün gövdesinden türetilir.

    • column_alias

      Sütun diğer adları benzersiz olmalıdır.

    • column_comment

      Sütun diğer adını açıklayan isteğe bağlı STRING bir değişmez değer.

    • column_constraint

      Önemli

      Bu özellik Genel Önizlemededir.

      Gerçekleştirilmiş görünümde sütuna bilgi birincil anahtarı veya bilgilendiren yabancı anahtar kısıtlaması ekler. Katalogdaki hive_metastore gerçekleştirilmiş görünümler için kısıtlamalar desteklenmez.

  • table_constraint

    Önemli

    Bu özellik Genel Önizlemededir.

    Gerçekleştirilmiş bir görünüme bir bilgilendirme birincil anahtarı veya bilgilendiren yabancı anahtar kısıtlamaları ekler. Katalogdaki hive-metastore gerçekleştirilmiş görünümler için kısıtlamalar desteklenmez.

  • view_clauses

    İsteğe bağlı olarak bölümleme, açıklamalar, kullanıcı tanımlı özellikler ve yeni gerçekleştirilmiş görünüm için yenileme zamanlaması belirtin. Her alt yan tümce yalnızca bir kez belirtilebilir.

    • BÖLÜMLENDİ

      Tabloyu bölümleme ölçütü olarak tablo sütunlarının isteğe bağlı listesi.

    • COMMENT view_comment

      STRING Tabloyu açıklamak için bir değişmez değer.

    • TBLPROPERTIES

      İsteğe bağlı olarak bir veya daha fazla kullanıcı tanımlı özellik ayarlar.

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

      Sağlandıysa, akış tablosunu veya gerçekleştirilmiş görünümü zamanlayarak verilerini verilen quartz cron zamanlaması ile yeniler. Yalnızca time_zone_values kabul edilir. AT TIME ZONE LOCAL Desteklenmez. Yoksa AT TIME ZONE , oturum saat dilimi kullanılır. Yoksa AT TIME ZONE ve oturum saat dilimi ayarlanmadıysa bir hata oluşur. SCHEDULE , ile eşanlamlı olarak eşdeğerdir SCHEDULE REFRESH.

      Delta Live Tables işlem hattı tanımında söz dizimini kullanamazsınız SCHEDULE .

  • AS sorgusu

    Görünümü temel tablolardan veya diğer görünümlerden oluşturan sorgu.

Gerekli izinler

Gerçekleştirilmiş görünüm (MV) oluşturan kullanıcı MV sahibidir ve aşağıdaki izinlere sahip olmalıdır:

  • SELECT MV tarafından başvuruda bulunan temel tablolara göre ayrıcalık.
  • USE CATALOG ayrıcalığı üst katalogda ve USE SCHEMA ayrıcalığı üst şemada.
  • CREATE MV şemasında ayrıcalık.

MV'yi yalnızca sahibi kullanabilir REFRESH .

Bir kullanıcının MV'yi sorgulayabilmesi için şunlar gerekir:

  • USE CATALOG ayrıcalığı üst katalogda ve USE SCHEMA ayrıcalığı üst şemada.
  • SELECT gerçekleştirilmiş görünüme göre ayrıcalık.

Sınırlamalar

  • NULL özellikli bir sütun üzerinde toplama içeren sum gerçekleştirilmiş bir görünümde bu sütundan kaldırılan son NULL olmayan değer varsa ve bu nedenle bu sütunda yalnızca NULL değerler kaldığında, gerçekleştirilmiş görünümün sonuçta elde edilen toplam değeri yerine NULLsıfır döndürür.
  • Sütun başvurusu için diğer ad gerekmez. Sütun olmayan başvuru ifadeleri, aşağıdaki örnekte olduğu gibi bir diğer ad gerektirir:
    • Izin verilen: SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
    • İzin Verilmiyor: SELECT col1, SUM(col2) FROM t GROUP BY col1
  • Gerçekleştirilmiş görünümler kimlik sütunlarını veya vekil anahtarları desteklemez.
  • Gerçekleştirilmiş görünümler geçici OPTIMIZE ve VACUUM komutları desteklemez. Bakım otomatik olarak gerçekleşir.

Örnekler

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