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.
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. malzemeleşmiş görünümler bir işlem hattı tarafından desteklenir. Gerçekleştirilmiş görünüm her güncelleştirildiğinde, sorgu sonuçları yukarı akış veri kümelerindeki değişiklikleri yansıtacak şekilde yeniden hesaplanır. Gerçekleştirilmiş görünümleri el ile veya bir zamanlamaya göre güncelleştirebilirsiniz.
Güncelleştirmeleri gerçekleştirme veya zamanlama hakkında daha fazla bilgi edinmek için bkz. İşlem hattı güncelleştirmesi çalıştırma.
Sözdizimi
CREATE [OR REFRESH] [PRIVATE] MATERIALIZED VIEW
view_name
[ column_list ]
[ view_clauses ]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ column_constraint ] [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ USING DELTA |
PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT view_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [...]
Parametreler
REFRESH
Belirtilirse görünümü oluşturur veya var olan bir görünümü ve içeriğini güncelleştirir.
ÖZEL
Özel bir gerçekleştirilmiş görünüm oluşturur. Özel bir gerçekleştirilmiş görünüm, katalogda yayımlanmasını istemediğiniz bir işlem hattı içinde ara tablo olarak yararlı olabilir.
- Bunlar kataloğa eklenmez ve yalnızca tanımlama işlem hattı içinde erişilebilir
- Katalogdaki mevcut bir nesneyle aynı ada sahip olabilirler. İşlem hattı içinde, özel bir gerçekleştirilmiş görünüm ve katalogdaki bir nesne aynı ada sahipse, ada yapılan başvurular özel gerçekleştirilmiş görünüme çözümlenir.
- Özel gerçekleştirilmiş görünümler, yalnızca tek bir güncelleme değil, işlem hattının tüm ömrü boyunca kalıcı hale getirilir.
Özel gerçekleştirilmiş görünümler daha önce şu
TEMPORARYparametresiyle oluşturulmuştur.view_name
Yeni oluşturulan görünümün adı. Tam nitelikli görünüm adı benzersiz olmalıdır.
Özel malzemeleşmiş görünümler, katalogda yayımlanan bir nesneyle aynı ada sahip olabilir.
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 tanımlayan isteğe bağlı
STRINGsabit değeri. Bu seçenek ilecolumn_typebirlikte belirtilmelidir. Sütun türü belirtilmezse, sütun açıklaması atlanır.-
Tabloya akan verileri doğrulayan bir kısıtlama ekler. bkz. İşlem hattı beklentileriyle veri kalitesini yönetme.
-
Önemli
Bu özellik Genel Önizleme aşamasındadır.
Hassas verileri anonim hale getirmek için bir sütun maskesi işlevi ekler. Bkz. Satır filtreleri ve sütun maskeleri.
-
tablo_kısıtlaması
Önemli
Bu özellik Genel Önizleme aşamasındadır.
Şema belirtirken birincil ve yabancı anahtarlar tanımlayabilirsiniz. Kısıtlamalar bilgilendirme amaçlıdır ve uygulanmaz. SQL dil referansındaki CONSTRAINT maddesi'yi inceleyin.
Uyarı
Tablo kısıtlamalarını tanımlamak için işlem hattınızın Unity Kataloğu özellikli bir işlem hattı olması gerekir.
view_clauses
İsteğe bağlı olarak maddileştirilmiş görünüm için bölümleme, açıklamalar ve kullanıcı tanımlı özellikler belirtin. Her alt yan tümce yalnızca bir kez belirtilebilir.
DELTA KULLANMA
Veri biçimini belirtir. Tek seçenek DELTA'dır.
Bu yan tümce isteğe bağlıdır ve varsayılan olarak DELTA'ya ayarlanmıştır.
BÖLÜMLERE AYRILDI
Tablodaki bölümleme için kullanılacak bir veya daha fazla sütunun isteğe bağlı listesi.
CLUSTER BYile birbirini dışlar.Sıvı kümeleme, kümeleme için esnek, iyileştirilmiş bir çözüm sağlar. İşlem hatları için
CLUSTER BYyerinePARTITIONED BYkullanmayı göz önünde bulundurun.CLUSTER BY
Tabloda sıvı kümelemeye olanak tanıyın ve kümeleme anahtarları olarak kullanılacak sütunları tanımlayın. ile
CLUSTER BY AUTOotomatik sıvı kümelemeyi kullanın ve Databricks sorgu performansını iyileştirmek için kümeleme anahtarlarını akıllı bir şekilde seçer.PARTITIONED BYile birbirini dışlar.YER
Tablo verileri için isteğe bağlı bir depolama konumu. Ayarlanmadığı takdirde, sistem otomatik olarak varsayılan olarak işlem hattı depolama konumunu kullanır.
Bu seçenek yalnızca Hive meta veri deposunda yayımlanırken kullanılabilir. Unity Kataloğu'nda konum otomatik olarak yönetilir.
YORUM
Tablo için isteğe bağlı bir açıklama.
TBLPROPERTIES
Tablo için isteğe bağlı tablo özellikleri listesi.
İLE ROW FILTER
Önemli
Bu özellik Genel Önizleme aşamasındadır.
Tabloya bir satır filtresi işlevi ekler. Bu tablo için gelecekteki sorgular, işlevin TRUE olarak değerlendirildiği satırların bir alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelememeye karar vermek için çağıran kullanıcının kimlik ve grup üyeliklerini incelemesine izin verdiğinden, ayrıntılı erişim denetimi için kullanışlıdır.
Bkz:
ROW FILTERyan tümcesi.sorgu
Tablo için veri kümesini tanımlayan sorgu.
Gerekli izinler
İşlem hattı için çalıştırma kullanıcısının aşağıdaki izinlere sahip olması gerekmektedir.
-
SELECTmaddileştirilmiş görünüm tarafından referans verilen temel tablolar üzerinde ayrıcalık. - Üst katalogda
USE CATALOGayrıcalığı ve üst şemadakiUSE SCHEMAayrıcalığı. -
CREATE MATERIALIZED VIEWmaddileştirilmiş görünüm için şema üzerinde ayrıcalık.
Bir kullanıcının malzeme edilmiş görünümün tanımlandığı işlem hattını güncelleyebilmesi için bunlar gereklidir:
- Üst katalogda
USE CATALOGayrıcalığı ve üst şemadakiUSE SCHEMAayrıcalığı. - Gerçekleştirilmiş görünümde gerçekleştirilmiş görünümün veya
REFRESHayrıcalığın sahipliği. - Gerçekleştirilmiş görünüm tarafından referans alınan temel tablolar üzerinde, gerçekleştirilmiş görünümün sahibinin ayrıcalığı olmalıdır.
Bir kullanıcının elde edilen gerçekleştirilmiş görünümü sorgulayabilmesi için gerekli olanlar şunlardır:
- Üst katalogda
USE CATALOGayrıcalığı ve üst şemadakiUSE SCHEMAayrıcalığı. -
SELECTgerçekleştirilmiş görünüm üzerinde ayrıcalık.
Sınırlamalar
- NULL niteliğine sahip bir sütun üzerinde
sumtoplama 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ızcaNULLdeğerler kaldığında, gerçekleştirilmiş görünümün elde edilen toplam değeri,NULLyerine 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 NULLile birliktePRIMARY KEYmanuel olarak belirtilmelidir. - Gerçekleştirilmiş görünümler kimlik sütunlarını veya vekil anahtarları desteklemez.
- Gerçekleştirilmiş görünümler
OPTIMIZEveVACUUMkomutlarını desteklemez. Bakım otomatik olarak gerçekleşir. - Tabloyu yeniden adlandırmak veya sahibini değiştirmek desteklenmemektedir.
- Oluşturulan sütunlar, kimlik sütunları ve varsayılan sütunlar desteklenmez.
Örnekler
-- Create a materialized view by reading from an external data source, using the default schema:
CREATE OR REFRESH MATERIALIZED VIEW taxi_raw
AS SELECT * FROM read_files("/databricks-datasets/nyctaxi/sample/json/")
-- Create a materialized view by reading from a dataset defined in a pipeline:
CREATE OR REFRESH MATERIALIZED VIEW filtered_data
AS SELECT
...
FROM taxi_raw
-- Specify a schema and clustering columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) CLUSTER BY (order_day_of_week, customer_id)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify partition columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) PARTITIONED BY (order_day_of_week)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a primary and foreign key constraint for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING NOT NULL PRIMARY KEY,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime)),
CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES main.default.customers(customer_id)
)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a row filter and mask clause for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales (
customer_id STRING MASK catalog.schema.customer_id_mask_fn,
customer_name STRING,
number_of_line_items STRING COMMENT 'Number of items in the order',
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
)
COMMENT "Raw data on sales"
WITH ROW FILTER catalog.schema.order_number_filter_fn ON (order_number)
AS SELECT * FROM sales_bronze