Databricks SQL'de gerçekleştirilmiş görünümleri kullanma
Bu makalede, performansı artırmak ve veri işleme ve analiz iş yüklerinizin maliyetini azaltmak için Databricks SQL'de gerçekleştirilmiş görünümlerin nasıl oluşturulacağı ve kullanılacağı açıklanmaktadır.
Not
Gerçekleştirilmiş görünümünüzle Azure Özel Bağlantı bir bağlantı kullanmanız gerekiyorsa Databricks temsilcinize başvurun.
Önemli
Databricks SQL'de oluşturulan gerçekleştirilmiş görünümler sunucusuz Delta Live Tables işlem hattı tarafından desteklenir. Bu işlevselliği kullanmak için çalışma alanınızın sunucusuz işlem hatlarını desteklemesi gerekir.
Gerçekleştirilmiş görünümler nelerdir?
Databricks SQL'de gerçekleştirilmiş görünümler, kullanıcıların kaynak tablolardaki verilerin en son sürümüne göre sonuçları önceden derlemesine olanak sağlayan Unity Kataloğu yönetilen tablolarıdır. Azure Databricks'te gerçekleştirilmiş görünümler, döndürülen sonuçlar gerçekleştirilmiş görünüm sorgulandığında sonuçları her zaman güncelleştirmek yerine, gerçekleştirilmiş görünümün son yenilendiği verilerin durumunu yansıttığından diğer uygulamalardan farklıdır. Gerçekleştirilmiş görünümleri el ile yenileyebilir veya yenilemeleri zamanlayabilirsiniz.
Gerçekleştirilmiş görünümler ayıklama, dönüştürme ve yükleme (ETL) işleme gibi veri işleme iş yükleri için güçlüdür. Gerçekleştirilmiş görünümler, uyumluluk, düzeltmeler, toplamalar veya genel değişiklik verileri yakalama (CDC) için verileri işlemek için basit, bildirim temelli bir yol sağlar. Gerçekleştirilmiş görünümler yavaş sorguları ve sık kullanılan hesaplamaları önceden hesaplayarak maliyeti azaltır ve sorgu gecikme süresini artırır. Gerçekleştirilmiş görünümler ayrıca temel tabloları temizleyerek, zenginleştirerek ve kötüleştirerek kullanımı kolay dönüştürmelere olanak tanır. Gerçekleştirilmiş görünümler, basitleştirilmiş bir son kullanıcı deneyimi sağlarken maliyetleri azaltabilir çünkü bazı durumlarda temel tablolardaki değişiklikleri artımlı olarak hesaplayabilirler.
Gerçekleştirilmiş görünümler ilk olarak Delta Live Tables'ın kullanıma sunulmasıyla Azure Databricks'te desteklendi. Databricks SQL ambarında gerçekleştirilmiş bir görünüm oluşturduğunuzda, gerçekleştirilmiş görünümde yenilemeleri işlemek için sunucusuz bir işlem hattı oluşturulur. Delta Live Tables kullanıcı arabiriminde veya işlem hatları API'sinde yenileme işlemlerinin durumunu izleyebilirsiniz. Bkz . Gerçekleştirilmiş görünüm yenilemesinin durumunu görüntüleme.
Gereksinim -leri
Gerçekleştirilmiş görünümler oluşturmak veya yenilemek için:
Unity Kataloğu etkin bir profesyonel veya sunucusuz SQL ambarı kullanmanız gerekir.
Gerçekleştirilmiş bir görünümü yenilemek için, bunu oluşturan çalışma alanında olmanız gerekir.
Çalışma alanınız sunucusuz SQL ambarlarını destekleyen bir bölgede olmalıdır.
Gerçekleştirilmiş görünümleri sorgulamak için:
- Gerçekleştirilmiş görünümün sahibi olmanız veya
SELECT
gerçekleştirilmiş görünümde, ana veUSE SCHEMA
üstleriyle birlikte sahipUSE CATALOG
olmanız gerekir. - Aşağıdaki işlem kaynaklarından birini kullanmanız gerekir:
- SQL ambarı
- Delta Live Tables arabirimleri
- Paylaşılan erişim modu işlem
- Çalışma alanı sunucusuz işlem için etkinleştirildiği sürece Databricks Runtime 15.4 ve üzeri üzerinde tek kullanıcı erişim modu. Bkz . Tek kullanıcı işlemlerinde ayrıntılı erişim denetimi.
- Yalnızca gerçekleştirilmiş görünüm sahibiyseniz: Databricks Runtime'ı 14.3 ile 15.3 arasında çalıştıran tek bir kullanıcı erişim modu işlem kaynağı.
Gerçekleştirilmiş görünümleri kullanmayla ilgili diğer kısıtlamalar hakkında bilgi edinmek için bkz . Sınırlamalar.
Gerçekleştirilmiş görünüm oluşturma
Databricks SQL gerçekleştirilmiş görünüm işlemleri, gerçekleştirilmiş görünümde CREATE
veri oluşturmak ve yüklemek için Databricks SQL ambarını kullanır. Gerçekleştirilmiş görünüm oluşturmak zaman uyumlu bir işlemdir; bu CREATE MATERIALIZED VIEW
, gerçekleştirilmiş görünüm oluşturulana ve ilk veri yükü bitene kadar komut blokları anlamına gelir. Her Databricks SQL gerçekleştirilmiş görünümü için sunucusuz Delta Live Tables işlem hattı otomatik olarak oluşturulur. Gerçekleştirilmiş görünüm yenilendiğinde Delta Live Tables işlem hattı yenilemeyi işler.
Gerçekleştirilmiş görünüm oluşturmak için deyimini CREATE MATERIALIZED VIEW
kullanın. Create deyimi göndermek için Azure Databricks kullanıcı arabirimi, Databricks SQL CLI veya Databricks SQL API'sindeki SQL düzenleyicisini kullanın.
Not
Gerçekleştirilmiş görünüm oluşturan kullanıcı gerçekleştirilmiş görünümün sahibidir ve aşağıdaki izinlere sahip olması gerekir:
-
SELECT
ayrıcalığı, gerçekleştirilmiş görünüm tarafından başvuruda bulunan temel tablolarda. -
USE CATALOG
veUSE SCHEMA
gerçekleştirilmiş görünüm için kaynak tabloları içeren şema ve katalog ayrıcalıkları. -
USE CATALOG
veUSE SCHEMA
gerçekleştirilmiş görünüm için hedef katalog ve şemadaki ayrıcalıklar. -
CREATE TABLE
veCREATE MATERIALIZED VIEW
gerçekleştirilmiş görünümü içeren şemadaki ayrıcalıklar.
Aşağıdaki örnek, temel tablodan mv1
gerçekleştirilmiş görünümü base_table1
oluşturur:
CREATE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Temel tablodaki sütun açıklamaları otomatik olarak yeni gerçekleştirilmiş görünüme yayılır. Zamanlama, tablo kısıtlamaları veya diğer özellikler eklemek için gerçekleştirilmiş görünüm tanımını değiştirin. Gerçekleştirilmiş görünüm tanımlamaya yönelik söz dizimi ayrıntılarını öğrenmek için bkz. CREATE MATERIALIZED VIEW.
Çalışma zamanı kanalını ayarlama
SQL ambarları kullanılarak oluşturulan gerçekleştirilmiş görünümler, Delta Live Tables işlem hattı kullanılarak otomatik olarak yenilenir. Delta Live Tables işlem hatları, kanaldaki current
çalışma zamanını varsayılan olarak kullanır. Sürüm işlemi hakkında bilgi edinmek için bkz . Delta Live Tables sürüm notları ve sürüm yükseltme işlemi .
Databricks, üretim iş yükleri için kanalın current
kullanılmasını önerir. Yeni özellikler ilk olarak kanala preview
gönderilir. Tablo özelliği olarak belirterek preview
yeni özellikleri test etmek için delta live tables kanalının önizlemesine bir işlem hattı ayarlayabilirsiniz. Tabloyu oluştururken veya bir ALTER deyimi kullanılarak tablo oluşturulduktan sonra bu özelliği belirtebilirsiniz.
Aşağıdaki kod örneği, create deyiminde kanalın önizleme olarak nasıl ayarlandığını gösterir:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Dış sistemlerden veri yükleme
Databricks, desteklenen veri kaynakları için Lakehouse Federasyonu kullanılarak dış verilerin yüklenmesini önerir. Lakehouse Federation tarafından desteklenmeyen kaynaklardan veri yükleme hakkında bilgi için bkz . Veri biçimi seçenekleri.
Gerçekleştirilmiş görünümü yenileme
İşlem, REFRESH
temel tablodaki en son değişiklikleri yansıtacak şekilde gerçekleştirilmiş görünümü yeniler. İşlem varsayılan olarak zaman uyumludur, yani komut yenileme işlemi tamamlanana kadar engellenir. Gerçekleştirilmiş bir görünümü yenilemek için deyimini REFRESH MATERIALIZED VIEW
kullanın. Bu komutun SQL söz dizimi ve parametreleriyle ilgili ayrıntılar için bkz. REFRESH (MATERIALIZED VIEW veya STREAMING TABLE). Artımlı olarak yenilenebilen gerçekleştirilmiş görünüm türleri hakkında daha fazla bilgi edinmek için bkz . Gerçekleştirilmiş görünümler için artımlı yenileme.
Yenileme deyimi göndermek için Azure Databricks kullanıcı arabirimindeki SQL düzenleyicisini, SQL ambarı, Databricks SQL CLI veya Databricks SQL API'sine bağlı bir not defterini kullanın.
Gerçekleştirilmiş görünüm yalnızca sahibi tarafından yapılabilir REFRESH
.
Aşağıdaki örnek gerçekleştirilmiş görünümü yeniler mv1
:
REFRESH MATERIALIZED VIEW mv1;
Databricks SQL gerçekleştirilmiş görünümleri nasıl yenilenir?
Gerçekleştirilmiş görünümler, yenileme işlemlerini işlemek için sunucusuz Delta Live Tables işlem hatlarını otomatik olarak oluşturur ve kullanır. Yenileme Delta Live Tables işlem hattı tarafından yönetilir ve güncelleştirme gerçekleştirilmiş görünümü oluşturmak için kullanılan Databricks SQL ambarı tarafından izlenir. Gerçekleştirilmiş görünümler, bir zamanlamaya göre çalışan bir Delta Live Tables işlem hattı kullanılarak güncelleştirilebilir. Bkz . Tetiklenen ve sürekli işlem hattı modu.
Not
Delta Live Tables çalışma zamanı, Delta olmayan veri kaynaklarındaki değişiklikleri algılayamaz. Tablo hala düzenli olarak güncelleştirilir, ancak aşırı yeniden derlemenin işlemde gerçekleşen artımlı işlemleri yavaşlatmasını önlemek için varsayılan tetikleyici aralığı daha yüksektir.
Varsayılan olarak, yenileme işlemleri zaman uyumlu olarak gerçekleştirilir. Yenileme işlemini zaman uyumsuz olarak gerçekleşecek şekilde de ayarlayabilirsiniz. Bu, yenileme komutu kullanılarak ayarlanabilir. Bkz. REFRESH (MATERIALIZED VIEW veya STREAMING TABLE) Her yaklaşımla ilişkili davranış aşağıdaki gibidir:
- Zaman uyumlu: Zaman uyumlu yenileme, yenileme tamamlanana kadar diğer işlemlerin devam etmesini engeller. Sonraki adım için, örneğin Databricks İşleri gibi düzenleme araçlarında yenileme işlemlerini sıralarken sonuç gerekiyorsa, zaman uyumlu yenileme kullanın. Gerçekleştirilmiş görünümleri bir işle birlikte yönetmek için SQL görev türünü kullanın. Databricks üzerinde orkestrasyona genel bakış için bkz. .
- Zaman uyumsuz: Zaman uyumsuz yenileme, gerçekleştirilmiş bir görünüm yenilemesi başladığında Delta Live Tables işleminde bir arka plan işi başlatır ve komutun veri yükü tamamlanmadan önce döndürülmesini sağlar. İşlemin komutun başlatıldığı ambarda işlem kapasitesini tutmaması nedeniyle bu yenileme türü maliyet tasarrufu sağlayabilir. Yenileme boşta kalırsa ve başka hiçbir görev çalışmıyorsa, yenileme diğer kullanılabilir işlem kullanılırken ambar kapatılabilir. Ayrıca, zaman uyumsuz yenilemeler birden çok işlemin paralel olarak başlatılmasını destekler.
Bazı sorgular artımlı olarak yenilenebilir. Gerçekleştirilmiş görünümler için bkz. Artımlı yenileme. Artımlı yenileme gerçekleştirilemiyorsa bunun yerine tam yenileme gerçekleştirilir.
Gerçekleştirilmiş görünüm yenilemelerini zamanlama
Databricks SQL gerçekleştirilmiş görünümünü, tanımlı bir zamanlamaya göre otomatik olarak yenilenmek üzere yapılandırabilirsiniz. Zamanlama ayarlamak için aşağıdakilerden birini yapın:
- Gerçekleştirilmiş görünümü oluştururken zamanlamayı yan tümcesiyle
SCHEDULE
yapılandırın - ALTER MATERIALIZED VIEW ifadesiyle bir zamanlama ekleyin.
Bir zamanlama oluşturulduğunda, güncelleştirmeyi işlemek için otomatik olarak yeni bir Databricks işi yapılandırılır.
Zamanlamayı görüntülemek için aşağıdakilerden birini yapın:
-
DESCRIBE EXTENDED
Azure Databricks kullanıcı arabiriminde SQL düzenleyicisinden deyimini çalıştırın. - Gerçekleştirilmiş görünümü görüntülemek için Katalog Gezgini'ni kullanın. Zamanlama, Genel Bakış sekmesinde, Yenileme durumu altında listelenir. Bkz . Katalog Gezgini nedir?.
Gerçekleştirilmiş görünüm yenilemesinin durumunu görüntüleme
Not
Delta Live Tables işlem hattı gerçekleştirilmiş görünüm yenilemelerini yönettiğinden, işlem hattı için başlatma süresi nedeniyle gecikme yaşanıyor. Bu süre, yenilemeyi gerçekleştirmek için gereken süreye ek olarak saniyeler ile dakikalar içinde olabilir.
Delta Live Tables kullanıcı arabiriminde gerçekleştirilmiş görünümü yöneten işlem hattını görüntüleyerek veya gerçekleştirilmiş görünüm için komutu tarafından döndürülen Yenileme Bilgileri'niDESCRIBE EXTENDED
gerçekleştirilmiş görünüm yenilemesinin durumunu görüntüleyebilirsiniz.
Delta Live Tables olay günlüğünü sorgulayarak gerçekleştirilmiş bir görünümün yenileme geçmişini de görüntüleyebilirsiniz. Gerçekleştirilmiş görünüm için yenileme geçmişini görüntüleme bölümüne bakın.
Sorgu geçmişini kullanarak çalıştırmaları izleme
Akış tablosu güncelleştirmelerinizi çalıştırmak için kullanılan Delta Live Tables işlem hattında kötü performans gösteren sorguları ve performans sorunlarını belirlemenize yardımcı olabilecek sorgu ayrıntılarına ve sorgu profillerine erişmek için sorgu geçmişi sayfasını kullanabilirsiniz. Sorgu geçmişleri ve sorgu profilleri için sağlanan bilgi türüne genel bakış için bkz . Sorgu geçmişi ve Sorgu profili.
Önemli
Bu özellik Genel Önizlemededir. Çalışma alanı yöneticileri Bu özelliği Önizlemeler sayfasından etkinleştirebilir. Bkz. Azure Databricks Önizlemelerini Yönetme.
Gerçekleştirilmiş görünümlerle ilgili tüm deyimler sorgu geçmişinde görünür. Herhangi bir komutu seçmek ve ilgili sorguları incelemek için Deyim açılan filtresini kullanabilirsiniz. Tüm CREATE
deyimleri, Delta Live Tables işlem hattında zaman uyumsuz olarak yürüten bir deyim izler REFRESH
.
REFRESH
Deyimler genellikle performansı iyileştirmeye yönelik içgörüler sağlayan ayrıntılı sorgu planlarını içerir.
Sorgu geçmişi kullanıcı arabirimindeki deyimlere erişmek REFRESH
için aşağıdaki adımları kullanın:
- Sorgu Geçmişi kullanıcı arabirimini açmak için sol kenar çubuğuna tıklayın
.
- REFRESH açılır filtreden onay kutusunu seçin.
- Sorgunun süresi ve toplanan ölçümler gibi özet ayrıntılarını görüntülemek için sorgu deyiminin adına tıklayın.
- Sorgu profilini açmak için Sorgu profilini göster'e tıklayın. Sorgu profilinde gezinme hakkında ayrıntılı bilgi için bkz . Sorgu profili.
- İsteğe bağlı olarak, ilgili sorguyu veya işlem hattını açmak için Sorgu Kaynağı bölümündeki bağlantıları kullanın.
Bkz. CREATE MATERIALIZED VIEW.
Delta Live Tables kullanıcı arabiriminde yenileme durumunu görüntüleme
Varsayılan olarak, gerçekleştirilmiş görünümü yöneten Delta Live Tables işlem hattı Delta Live Tables kullanıcı arabiriminde görünmez. Delta Live Tables kullanıcı arabiriminde işlem hattını görüntülemek için işlem hattının İşlem hattı ayrıntıları sayfasının bağlantısına doğrudan erişmeniz gerekir. Bağlantıya erişmek için:
- Deyimi tarafından döndürülen tablonun En Son Yenileme satırında gösterilen
- Gerçekleştirilmiş görünümün köken sekmesinde İşlem Hatları'na ve ardından işlem hattı bağlantısına tıklayın.
Azure Databricks kullanıcı arabirimindeki SQL düzenleyicisi kullanılarak gönderilen zaman uyumsuz REFRESH
komutlar için, Sonuçlar panelinde gösterilen bağlantıyı izleyerek yenileme durumunu görüntüleyebilirsiniz.
Etkin yenilemeyi durdurma
Delta Live Tables kullanıcı arabiriminde etkin yenilemeyi durdurmak için İşlem hattı ayrıntıları sayfasında Durdur'a tıklayarak işlem hattı güncelleştirmesini durdurun. Yenilemeyi Databricks CLI veya POST /api/2.0/pipelines/{pipeline_id}/stop işlemiyle pipelines API'sinde de durdurabilirsiniz.
Gerçekleştirilmiş görünümün tanımını güncelleştirme
Gerçekleştirilmiş görünümün tanımını güncelleştirmek için önce bırakmanız, ardından gerçekleştirilmiş görünümü yeniden oluşturmanız gerekir.
Silme vektörleri etkin bir malzeme görünümünden kayıtları kalıcı olarak silme
Önemli
Malzemeleşmiş görünümler içeren REORG
deyimine destek Genel Önizleme'ndedir.
Not
- Gerçekleştirilmiş görünümle
REORG
deyimi kullanmak için Databricks Runtime 15.4 ve üzeri gerekir. -
REORG
deyimini herhangi bir gerçekleştirilmiş görünümde kullanabilirsiniz ancak yalnızca silme vektörleri etkin bir gerçekleştirilmiş görünümden kayıtları silerken gereklidir. Silme vektörleri etkinleştirilmeden gerçekleştirilmiş bir görünümle kullanıldığında komutun hiçbir etkisi yoktur.
GDPR uyumluluğu gibi silme vektörleri etkinleştirilmiş gerçekleştirilmiş bir görünümün temel depolama alanından kayıtları fiziksel olarak silmek için, gerçekleştirilmiş görünümün verilerinde bir VACUUM işleminin çalıştığından emin olmak için ek adımlar atılmalıdır.
Aşağıda bu adımlar daha ayrıntılı olarak açıklanmaktadır:
-
APPLY (PURGE)
parametresini belirterek gerçekleştirilmiş görünümde birREORG
deyimi çalıştırın. ÖrneğinREORG TABLE <materialized-view-name> APPLY (PURGE);
. Bkz. REORG TABLE. - Gerçekleştirilmiş görünümün veri saklama süresinin geçmesini bekleyin. Varsayılan veri saklama süresi yedi gündür, ancak
delta.deletedFileRetentionDuration
tablo özelliğiyle yapılandırılabilir. Bkz . Zaman yolculuğu sorguları için veri saklamayı yapılandırma. -
REFRESH
gerçekleştirilmiş görünüm. Bkz. gerçekleştirilmiş görünümü yenileme.REFRESH
işlemini izleyen 24 saat içinde, kayıtların kalıcı olarak silindiğinden emin olmak için gerekenVACUUM
işlemi de dahil olmak üzere Delta Live Tables bakım görevleri otomatik olarak çalıştırılır. Bkz. Delta Live Tables tarafından gerçekleştirilen bakım görevleri.
Gerçekleştirilmiş görünümü bırakma
Not
Gerçekleştirilmiş görünümü bırakmak için komutunu göndermek için bu gerçekleştirilmiş görünümün sahibi olmanız veya gerçekleştirilmiş görünümde MANAGE
ayrıcalığına sahip olmanız gerekir.
Gerçekleştirilmiş bir görünümü silmek için DROP VIEW deyimini kullanın. Bir DROP
deyim göndermek için Azure Databricks kullanıcı arabiriminde, Databricks SQL CLI'sinde veya Databricks SQL API'sinde SQL düzenleyicisini kullanabilirsiniz. Aşağıdaki örnek, gerçekleştirilmiş görünümü bırakır mv1
:
DROP MATERIALIZED VIEW mv1;
Gerçekleştirilmiş görünümü açıklama
Gerçekleştirilmiş bir görünümün sütunlarını ve veri türlerini almak için deyimini DESCRIBE
kullanın. Gerçekleştirilmiş bir görünümün sütunlarını, veri türlerini ve sahip, konum, oluşturma zamanı ve yenileme durumu gibi meta verileri almak için kullanın DESCRIBE EXTENDED
. Bir DESCRIBE
deyim göndermek için Azure Databricks kullanıcı arabirimindeki SQL düzenleyicisini, Databricks SQL CLI'yı veya Databricks SQL API'sini kullanın.
Gerçekleştirilmiş görünümün sahibini değiştirme
Hem meta veri deposu yöneticisi hem de çalışma alanı yöneticisiyseniz gerçekleştirilmiş görünümün sahibini değiştirebilirsiniz. Gerçekleştirilmiş görünümler değişiklikleri işlemek için Delta Live Tables işlem hatlarını otomatik olarak oluşturur ve kullanır. Gerçekleştirilmiş görünüm sahibini değiştirmek için aşağıdaki adımları kullanın:
- Gerçekleştirilmiş görünümün köken sekmesinde İşlem Hatları'na ve ardından işlem hattı bağlantısına tıklayın.
- Paylaşöğesine tıklayın. İzin Ayarları iletişim kutusu görüntülenir.
- Geçerli sahibi kaldırmak için geçerli sahibin adının sağındaki x işaretine tıklayın.
- Kullanılabilir kullanıcıların listesini filtrelemek için yazmaya başlayın. Yeni işlem hattı sahibi olması gereken kullanıcıya tıklayın.
- Değişikliklerinizi kaydetmek ve iletişim kutusunu kapatmak için Kaydet'e tıklayın.
İşlem hattında tanımlanan gerçekleştirilmiş görünümler de dahil olmak üzere tüm işlem hattı varlıkları yeni işlem hattı sahibine aittir. Gelecekteki tüm güncelleştirmeler yeni sahibin kimliği kullanılarak çalıştırılır.
Gerçekleştirilmiş görünümlere erişimi denetleme
Gerçekleştirilmiş görünümler, veri paylaşımını desteklemek için zengin erişim denetimlerini desteklerken, potansiyel olarak özel verilerin ortaya konulmasını önler. Gerçekleştirilmiş görünüm sahibi veya MANAGE
ayrıcalığına sahip bir kullanıcı, diğer kullanıcılara SELECT
ayrıcalıkları verebilir. Gerçekleştirilmiş görünüme erişimi olan SELECT
kullanıcıların gerçekleştirilmiş görünüm tarafından başvuruda bulunan tablolara erişmesi gerekmez SELECT
. Bu erişim denetimi, temel alınan verilere erişimi denetlerken veri paylaşımını etkinleştirir.
Gerçekleştirilmiş görünüme ayrıcalıklar verme
Gerçekleştirilmiş görünüme erişim vermek için deyimini GRANT
kullanın:
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
privilege_type:
-
SELECT
- kullanıcı gerçekleştirilmiş görünüme sahip olabilirSELECT
. -
REFRESH
- kullanıcı gerçekleştirilmiş görünüme sahip olabilirREFRESH
. Yenilemeler, sahibin izinleri kullanılarak çalıştırılır.
Aşağıdaki örnek gerçekleştirilmiş bir görünüm oluşturur ve kullanıcıya seçme ve yenileme ayrıcalıkları verir:
CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;
Gerçekleştirilmiş görünümden ayrıcalıkları iptal etme
Gerçekleştirilmiş görünümden erişimi iptal etmek için deyimini REVOKE
kullanın:
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Bir temel tablodaki SELECT
ayrıcalıkları gerçekleştirilmiş görünüm sahibinden veya gerçekleştirilmiş görünümde MANAGE
veya SELECT
ayrıcalıkları verilmiş olan diğer kullanıcılardan iptal edildiğinde veya temel tablo bırakıldığında, gerçekleştirilmiş görünüm sahibi veya erişim verilen kullanıcı gerçekleştirilmiş görünümü sorgulamaya devam eder. Ancak, aşağıdaki davranış oluşur:
- Gerçekleştirilmiş görünüm sahibi veya gerçekleştirilmiş görünüme erişimini kaybeden diğer kişiler artık
REFRESH
bu gerçekleştirilmiş görünüme sahip olamaz ve gerçekleştirilmiş görünüm eskir. - Zamanlamayla otomatikleştirilmişse, bir sonraki zamanlanan
REFRESH
başarısız olur veya çalıştırılmaz.
Aşağıdaki örnek, 'den SELECT
ayrıcalığı mv1
iptal eder:
REVOKE SELECT ON mv1 FROM user1;
Değişiklik veri akışını etkinleştirme
Belirli gelişmiş kullanım örnekleri dışında gerçekleştirilmiş görünüm temel tablolarında değişiklik veri akışı gereklidir. Temel tabloda veri akışını değiştirme özelliğini etkinleştirmek için aşağıdaki söz dizimini delta.enableChangeDataFeed
kullanarak tablo özelliğini ayarlayın:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Gerçekleştirilmiş görünümün yenileme geçmişini görüntüleme
Geçerli ve geçmiş yenilemeler dahil olmak üzere gerçekleştirilmiş bir görünümde işlemlerin REFRESH
durumunu görüntülemek için Delta Live Tables olay günlüğünü sorgulayın:
SELECT
*
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
değerini, katalog ve şema da dahil olmak üzere gerçekleştirilmiş görünümün tam adıyla değiştirin <fully-qualified-table-name>
.
Bkz . Delta Live Tables olay günlüğü nedir?.
Sınırlama
- İşlem ve çalışma alanı gereksinimleri için bkz . Gereksinimler.
- Gerçekleştirilmiş görünümler kimlik sütunlarını veya vekil anahtarları desteklemez.
- Gerçekleştirilmiş görünümde bir -able sütunu üzerinde
NULL
toplam toplama kullanılıyorsa ve bu sütunda yalnızcaNULL
değerler kalıyorsa, gerçekleştirilmiş görünüm sonuç toplama değeri yerineNULL
sıfır olur. - Değişiklik veri akışını gerçekleştirilmiş görünümden okuyamazsınız.
- Gerçekleştirilmiş görünümlerde zaman yolculuğu sorguları desteklenmez.
- Gerçekleştirilmiş görünümleri destekleyen temel dosyalar, gerçekleştirilmiş görünüm tanımında görünmeyen yukarı akış tablolarındaki verileri (olası kişisel bilgiler dahil) içerebilir. Bu veriler, gerçekleştirilmiş görünümlerin artımlı olarak yenilenmesini desteklemek için temel alınan depolamaya otomatik olarak eklenir. Gerçekleştirilmiş bir görünümün temel dosyaları, gerçekleştirilmiş görünüm şemasının parçası olmayan yukarı akış tablolarından verileri açığa çıkarma riski içerebileceğinden Databricks, temel alınan depolamanın güvenilmeyen aşağı akış tüketicileriyle paylaşılmaması önerilir. Örneğin, gerçekleştirilmiş görünümün tanımının bir
COUNT(DISTINCT field_a)
yan tümce içerdiğini varsayalım. Gerçekleştirilmiş görünüm tanımı yalnızca toplamaCOUNT DISTINCT
yan tümcesini içerse de, temel dosyalar gerçek değerlerininfield_a
listesini içerir.