GERÇEKLEŞTİRİLMİŞ GÖRÜNÜM OLUŞTURMA
Şunlar için geçerlidir: 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
'ninIF NOT EXISTS
en fazla birini belirtebilirsiniz.-
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.
-
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.-
Ö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.
-
-
Ö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.
-
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.-
İ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. YoksaAT TIME ZONE
, oturum saat dilimi kullanılır. YoksaAT TIME ZONE
ve oturum saat dilimi ayarlanmadıysa bir hata oluşur.SCHEDULE
, ile eşanlamlı olarak eşdeğerdirSCHEDULE 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 veUSE 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 veUSE 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ızcaNULL
değerler kaldığında, gerçekleştirilmiş görünümün sonuçta elde edilen toplam değeri yerineNULL
sı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
- Izin verilen:
- 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
veVACUUM
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;
İlgili makaleler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin