Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Databricks SQL
malzemeleşmiş görünüm, sorgu için önceden hesaplanmış sonuçların kullanılabildiği ve girişteki değişiklikleri yansıtacak şekilde güncellenebildiğ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. Gerçekleştirilmiş tüm görünümler bir ETL işlem hattı tarafından desteklenir. Gerçekleştirilmiş görünümleri el ile veya bir zamanlamaya göre yenileyebilirsiniz.
El ile yenileme gerçekleştirme hakkında daha fazla bilgi edinmek için bkz. REFRESH (MATERIALIZED VIEW veya STREAMING TABLE).
Yenileme zamanlama hakkında daha fazla bilgi edinmek için bkz. Örnekler veya ALTER MATERIALIZED VIEW.
Gerçekleştirilmiş görünümler yalnızca Pro veya Sunucusuz SQL ambarı kullanılarak veya işlem hattı içinde oluşturulabilir.
Not
Gerçekleştirilmiş görünümlerde ve akış tablolarında oluşturma ve yenileme işlemleri sunucusuz Lakeflow Bildirimli İşlem Hatları ile desteklenir. Kullanıcı arabirimindeki yedekleme işlem hatları hakkındaki ayrıntıları görüntülemek için Katalog Gezgini'ni kullanabilirsiniz. Bkz. Katalog Gezgini nedir?.
Sözdizimi
{ CREATE OR REPLACE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] }
view_name
[ column_list ]
[ view_clauses ]
[schedule_clause]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ , table_constraint ] [...])
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] schedule_clause |
WITH { ROW FILTER clause } } [...]
schedule_clause
{ EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
CRON cron_string [ AT TIME ZONE timezone_id ] }
Parametreler
DEĞİŞTİR
Belirtilirse, görünümü ve zaten varsa içeriğini değiştirir.
EĞER YOKSA
Görünüm mevcut değilse oluşturur. Bu adla bir görünüm zaten varsa,
CREATE MATERIALIZED VIEW
deyimi yoksayılır.En fazla birini belirtmek üzere
IF NOT EXISTS
veyaOR REPLACE
seçeneklerinden birini belirtebilirsiniz.-
Yeni oluşturulan görünümün adı. Tam nitelikli 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. Bir sütun listesi belirtirseniz, sütun diğer adlarının sayısı, sorgudaki ifade sayısıyla uygun olmalıdır. Sütun listesi belirtilmediğinde, takma adlar görünümün gövdesinden türetilir.
-
Sütun adları benzersiz olmalı ve sorgunun çıkış sütunlarıyla eşlenmelidir.
sütun_türü
Sütunun veri türünü belirtir. Malzemeleşmiş görünümler, Azure Databricks tarafından desteklenen tüm veri türlerini desteklemez.
column_comment
Sütunu açıklayan isteğe bağlı bir
STRING
sabit değer. Bu seçenek ilecolumn_type
birlikte belirtilmelidir. Sütun türü belirtilmezse, sütun açıklaması atlanır.column_constraint
Maddileştirilmiş görünümdeki bir sütuna bilgilendirici birincil anahtar veya bilgilendirici yabancı anahtar kısıtlaması ekler. Sütun türü belirtilmezse, sütun kısıtlaması atlanır.
-
Önemli
Bu özellik Genel Önizlemededir.
Hassas verileri anonim hale getirmek için bir sütun maskesi işlevi ekler. Bu sütundaki sonraki tüm sorgular, sütunun özgün değeri yerine bu işlevi sütun üzerinde değerlendirmenin sonucunu alır. Bu, işlevin, kullanıcı kimliğini ya da grup üyeliklerini inceleyerek değeri gizleyip gizlemeyeceğini belirleyebileceği ince detaylı erişim kontrolü amaçları için faydalı olabilir. Sütun türü belirtilmezse, sütun maskesi geçilir.
-
tablo_kısıtlaması
Gerçekleştirilmiş görünümdeki tabloya bir bilgilendirici birincil anahtar veya bilgilendirici yabancı anahtar kısıtlaması ekler. Sütun türü belirtilmezse, tabloya yönelik kısıtlama atlanır.
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.
Not
Sıvı kümeleme, kümeleme için esnek, iyileştirilmiş bir çözüm sağlar. Gerçekleştirilmiş görünümler için
CLUSTER BY
yerinePARTITIONED BY
kullanmayı göz önünde bulundurun. -
Sütunların bir alt kümesine göre kümeleme yapması için isteğe bağlı bir ifade. Sıvı kümeleme hakkında daha fazla bilgi için bkz. Tablolar için sıvı kümeleme kullanma.
Delta Lake sıvı kümeleme ile
PARTITIONED BY
birleştirilemez. YORUM yorumu_gör
Tabloyu tanımlamak için bir
STRING
literali.-
İsteğe bağlı olarak bir veya daha fazla kullanıcı tanımlı özellik ayarlar.
Bu deyimi çalıştırmak için kullanılan Lakeflow Bildirimli İşlem Hatları çalışma zamanı kanalını belirtmek için bu ayarı kullanın.
pipelines.channel
özelliğinin değerini"PREVIEW"
veya"CURRENT"
olarak ayarlayın. Varsayılan değer şudur:"CURRENT"
. Lakeflow Bildirimli İşlem Hatları kanalları hakkında daha fazla bilgi için bkz. Lakeflow Bildirimli İşlem Hatları çalışma zamanı kanalları. TAKVİM [ REFRESH ] takvim_maddesi
EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }
Düzenli aralıklarla gerçekleşen bir yenileme zamanlamak için
EVERY
söz dizimini kullanın.EVERY
söz dizimi belirtilirse, akış tablosu veya gerçekleştirilmiş görünüm, sağlanan değere göre belirli aralıklarla güncellenir; örneğin,HOUR
,HOURS
,DAY
,DAYS
,WEEK
veyaWEEKS
. Aşağıdaki tabloda,number
için kabul edilen tamsayı değerleri listelenmiştir.Zaman birimi Tamsayı değeri HOUR or HOURS
1 <= H <= 72 DAY or DAYS
1 <= D <= 31 WEEK or WEEKS
1 <= W <= 8 Not
Dahil edilen zaman biriminin tekil ve çoğul biçimleri sematik olarak eşdeğerdir.
CRON cron_string [ AT TIME ZONE timezone_id ]
quartz cron değeri kullanarak bir yenileme zamanlamak için. Geçerli time_zone_values kabul edilir.
AT TIME ZONE LOCAL
desteklenmez.AT TIME ZONE
yoksa, oturum zaman dilimi kullanılır.AT TIME ZONE
yoksa ve oturum saat dilimi ayarlanmadıysa bir hata oluşur.SCHEDULE
, ile eşanlamlı olarak eşdeğerdirSCHEDULE REFRESH
.
-
Önemli
Bu özellik Genel Önizlemededir.
Tabloya bir satır filtresi işlevi ekler. Bu tablodan sonraki tüm sorgular, işlevin TRUE değerini değerlendirdiği satırların bir alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelemeyeceğini belirlemek için çağıran kullanıcının kimlik 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:
- MV'nin başvurduğu temel tablolar üzerinde
SELECT
ayrıcalığı. - Üst katalogda
USE CATALOG
ayrıcalığı ve üst şemadakiUSE SCHEMA
ayrıcalığı. - MV için şema üzerindeki
CREATE MATERIALIZED VIEW
ayrıcalığı.
Bir kullanıcının MV'yi yenileyebilmesi için şunlar gerekir:
- Üst katalogda
USE CATALOG
ayrıcalığı ve üst şemadakiUSE SCHEMA
ayrıcalığı. - MV'nin sahipliği veya
REFRESH
MV üzerindeki ayrıcalık. - MV'nin sahibi, MV tarafından referans verilen temel tablolarda
SELECT
ayrıcalığına sahip olmalıdır.
Bir kullanıcının MV'yi sorgulayabilmesi için şunlar gerekir:
- Üst katalogda
USE CATALOG
ayrıcalığı ve üst şemadakiUSE SCHEMA
ayrıcalığı. -
SELECT
gerçekleştirilmiş görünüm üzerinde 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 CREATE
deyimi aracılığıyla eklenmelidir.
Davranış
-
Tanımlayıcı Yetkisiyle Yenile:
REFRESH MATERIALIZED VIEW
deyimi bir maddi görünümü yenilediğinde, satır filtreleme işlevleri tanımlayıcının (tablo sahibi olarak) haklarıyla çalışır. Bu, tablo yenilemesinin materyalize 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
CURRENT_USER
gibiIS_MEMBER
) denetleen işlevler özel durumlardır. Bu işlevler çağıran kimliğiyle ç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ğerlendirilip 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 DESCRIBE EXTENDED
, INFORMATION_SCHEMA
veya Katalog Gezgini'ni kullanın. 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 niteliğine sahip bir sütun üzerinde
sum
toplama işlemi içeren bir gerçekleştirilmiş görünümde, bu sütundan kaldırılan son NULL olmayan değer çıkarıldığında ve bu sütunda yalnızcaNULL
değerler kaldığında, gerçekleştirilmiş görünümün elde edilen toplam değeri,NULL
yerine sıfır döndürür. - Sütun referansı için takma ad gerekmez. Sütun olmayan başvuru ifadeleri, aşağıdaki örnekte olduğu gibi bir takma 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:
- Geçerli bir deyim olması için
NOT NULL
ile birliktePRIMARY KEY
manuel olarak belirtilmelidir. - Gerçekleştirilmiş görünümler kimlik sütunlarını veya vekil anahtarları desteklemez.
- Gerçekleştirilmiş görünümler
OPTIMIZE
veVACUUM
komutlarını desteklemez. Bakım otomatik olarak gerçekleşir. - 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 every day.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
COMMENT 'Daily sales numbers'
SCHEDULE EVERY 1 DAY
AS SELECT date AS date, sum(sales) AS sumOfSales
FROM table1
GROUP BY date;
-- Sets the runtime channel to "PREVIEW"
> CREATE MATERIALIZED VIEW mv_preview
TBLPROPERTIES(pipelines.channel = "PREVIEW")
AS SELECT * FROM RANGE(10)
-- Create a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id int NOT NULL,
full_name string,
movie_title string,
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 or replace the materialized view to remove the table constraint and add a partition
> CREATE OR REPLACE MATERIALIZED VIEW subscribed_movies
PARTITIONED BY (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 with a row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
id int,
name string,
region string,
ssn string MASK catalog.schema.ssn_mask_fn
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT id, name, region, ssn
FROM employees;