Aracılığıyla paylaş


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

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_name

      Sütun adları benzersiz olmalı ve sorgunun çıkış sütunlarıyla eşlenmelidir.

    • MASK yan tümcesi

      Önemli

      Bu özellik Genel Önizlemededir.

      Hassas verileri anonim hale getirmek için bir sütun maskesi işlevi ekler. Bu sütundan gelecek tüm sorgular, sütunun özgün değeri yerine bu işlevi sütun üzerinde değerlendirmenin sonucunu alır. Bu, işlevin, değeri yeniden işlemeye karar vermek için çağıran kullanıcının kimliğini ve/veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.

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

    • WITH ROW FILTER yan tümcesi

      Önemli

      Bu özellik Genel Önizlemededir.

      Tabloya bir satır filtresi işlevi ekler. Bu tablodan gelecek tüm sorgular, işlevin TRUE değerini değerlendirdiği satırlarının alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelememeye karar vermek için çağıran kullanıcının kimliğini ve/veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.

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

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

  • USE CATALOG ayrıcalığı üst katalogda ve USE SCHEMA ayrıcalığı üst şemada.
  • MV'nin sahipliği veya REFRESH MV üzerindeki ayrıcalık.
  • MV'nin sahibi, MV tarafından başvuruda bulunan temel tablolar üzerinde ayrıcalığı olmalıdır SELECT .

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.

Satır filtreleri ve sütun maskeleri

Önemli

Bu özellik Genel Önizlemededir.

Satır filtreleri, tablo taraması satırları her getirdiğinde filtre olarak uygulanan bir işlev belirtmenize olanak tanır. Bu filtreler, izleyen sorguların yalnızca filtre koşulunun true olarak değerlendirildiği satırları döndürmesini sağlar.

Sütun maskeleri, tablo taraması satırları her getirdiğinizde sütunun değerlerini maskelemenizi sağlar. Bu sütunu içeren gelecekteki tüm sorgular, işlevi sütun üzerinde değerlendirerek sütunun özgün değerini değiştirmenin sonucunu alır.

Satır filtrelerini ve sütun maskelerini kullanma hakkında daha fazla bilgi için bkz . Satır filtrelerini ve sütun maskelerini kullanarak hassas tablo verilerini filtreleme.

Satır Filtrelerini ve Sütun Maskelerini Yönetme

Gerçekleştirilmiş görünümlerdeki satır filtreleri ve sütun maskeleri deyimi aracılığıyla CREATE eklenmelidir.

Davranış

  • Definer olarak yenile: Deyimi gerçekleştirilmiş bir görünümü yenilediğinde REFRESH MATERIALIZED VIEW , satır filtresi işlevleri tanımlayıcının haklarıyla (tablo sahibi olarak) çalışır. Bu, tablo yenilemesinin gerçekleştirilmiş görünümü oluşturan kullanıcının güvenlik bağlamını kullandığı anlamına gelir.
  • Sorgu: Çoğu filtre, tanımlayıcının haklarıyla çalıştırılırken, kullanıcı bağlamını (ve IS_MEMBERgibiCURRENT_USER) denetleen işlevler özel durumlardır. Bu işlevler çağıran olarak çalışır. Bu yaklaşım, geçerli kullanıcının bağlamını temel alarak kullanıcıya özgü veri güvenliği ve erişim denetimlerini zorunlu kılıp uygular.
  • Satır filtreleri ve sütun maskeleri içeren kaynak tablolar üzerinde gerçekleştirilmiş görünümler oluştururken, gerçekleştirilmiş görünümün yenilenmesi her zaman tam bir yenilemedir. Tam yenileme, kaynakta bulunan tüm verileri en son tanımlarla yeniden işler. Bu, kaynak tablolardaki güvenlik ilkelerinin en güncel veri ve tanımlarla değerlendirilmesini ve uygulanmasını sağlar.

Gözlemlenebilirlik

Belirli bir gerçekleştirilmiş görünüme uygulanan mevcut satır filtrelerini ve sütun maskelerini incelemek için , INFORMATION_SCHEMAveya Katalog Gezgini'ni kullanınDESCRIBE EXTENDED. Bu işlevsellik, kullanıcıların gerçekleştirilmiş görünümlerde veri erişimi ve koruma önlemlerini denetlemesine ve gözden geçirmesine olanak tanır.

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.
  • Gerçekleştirilmiş görünümler ve FOREIGN KEYgibi PRIMARY KEY tablo kısıtlamalarını desteklemez.
  • Gerçekleştirilmiş görünümler, veri kalitesi kısıtlamalarını tanımlama beklentilerini desteklemez.

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