Bağımsız maddileştirilmiş görünümleri kullanma

Bağımsız somutlaştırılmış görünümler, performansı artırmak ve veri işleme ile analiz iş yüklerinizin maliyetini azaltmak için sorgu sonuçlarını önceden hesaplar ve önbelleğe alır.

Databricks SQL deposundan veya sunucusuz genel amaçlı işlem üzerinde çalışan bir not defterinden bağımsız somutlaştırılmış görünümler oluşturabilir ve yenileyebilirsiniz. İki işlem seçeneği arasındaki farklar hakkında ayrıntılı bilgi için bkz . Tek başına işlem hatları için gereksinimler.

Bir not defterinden Python kullanarak bağımsız malzemelendirilmiş görünümler oluşturmak ve yenilemek için bkz: Python'ı bağımsız işlem hatlarıyla kullanma.

Bağımsız somutlaştırılmış görünümler nelerdir?

Bağımsız maddileştirilmiş görünüm, Lakeflow işlem hattının dışında tanımlanan bir sorgunun sonuçlarını fiziksel olarak depolayan, Unity Catalog tarafından yönetilen bir tablodur. İsteğe bağlı olarak sonuçları hesaplayan standart görünümlerden farklı olarak, gerçekleştirilmiş görünümler sonuçları önbelleğe alır ve temel alınan kaynak tablolar zamanlamaya göre veya otomatik olarak değiştikçe bunları güncelleştirir.

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 uygundur. 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 ayrıca temel tabloları temizleyerek, zenginleştirerek ve normalizasyonunu kaldırarak kullanımı kolay dönüştürmelere olanak tanır. Pahalı veya sık kullanılan sorguları önceden hesaplayarak maddileştirilmiş görünümler, sorgu gecikme süresini ve kaynak tüketimini azaltır. Çoğu durumda, kaynak tablolardaki değişiklikleri artımlı olarak hesaplayarak verimliliği ve son kullanıcı deneyimini daha da geliştirebilirler.

Gerçekleştirilmiş görünümler için yaygın kullanım örnekleri şunlardır:

  • İş zekası panosunu, son kullanıcı sorgusunda gecikmeyi en aza indirerek güncel tutma.
  • Basit SQL mantığıyla karmaşık ETL düzenlemesini azaltma.
  • Karmaşık, katmanlı dönüşümler oluşturma.
  • up-totarih içgörüleriyle tutarlı performans gerektiren tüm kullanım örnekleri.

Databricks SQL veri ambarında malzemeleşmiş bir görünüm oluşturduğunuzda, oluşturma ve yenileme işlemlerini işlemek için bir sunucusuz işlem hattı oluşturulur. Yenileme işlemlerinin durumunu Katalog Gezgini'nde izleyebilirsiniz. Bkz. ile DESCRIBE EXTENDEDayrıntıları görüntüleme.

Gereksinimler

Bağımsız somutlaştırılmış görünümler oluşturmak, yenilemek ve sorgulamak için gereken işlem kaynakları seçenekleri, izinler ve diğer gereksinimler hakkında bilgi için bkz. Bağımsız işlem hatları için gereksinimler.

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

Bağımsız somutlaştırılmış görünüm CREATE işlemleri, somutlaştırılmış görünümü oluşturmak ve içine veri yüklemek için Databricks SQL veri ambarını kullanır. Maddileştirilmiş bir görünüm oluşturmak, zaman uyumlu bir işlemdir; bu, CREATE MATERIALIZED VIEW komutunun, maddileştirilmiş görünüm oluşturulana ve ilk veri yüklemesi bitene kadar bloke edilmesi anlamına gelir. Her bağımsız somutlaştırılmış görünüm için otomatik olarak sunucusuz bir işlem hattı oluşturulur. Gerçekleştirilmiş görünüm yenilendiğinde işlem hattı yenilemeyi işler.

Gerçekleştirilmiş bir görünüm oluşturmak için CREATE MATERIALIZED VIEW deyimini kullanın. Create deyimi göndermek için Azure Databricks kullanıcı arabiriminde SQL düzenleyicisini, Databricks SQL CLI veya Databricks SQL API kullanın.

Gerçekleştirilmiş görünüm oluşturan kullanıcı, gerçekleştirilmiş görünümün sahibidir.

Geçici gerçekleştirilmiş görünüm

Aşağıdaki örnek, temel tablodan mv1gerçekleştirilmiş görünümü base_table1 oluşturur:

-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Tetikleyiciyle maddeleştirilmiş görünüm

Aşağıdaki örnek, TRIGGER ON UPDATE kullanarak yukarı akış kaynak verileri değiştiğinde otomatik olarak yenilenen bir gerçekleştirilmiş görünüm oluşturur. Özellikle yukarı akış bağımlılıkları öngörülebilir zamanlamalarda çalıştırılmadığında üretim iş yükleri için bu yaklaşımı kullanın.

-- Refresh automatically when the source table is updated.
CREATE OR REPLACE MATERIALIZED VIEW mv_trigger
  TRIGGER ON UPDATE
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Zamanlanmış gerçekleştirilmiş görünüm

Aşağıdaki örnek, UTC ile sabah 03:30’da çalışan günlük bir CRON yenileme zamanlamasına sahip bir somutlaştırılmış görünüm oluşturur. Yan tümcesindeki SELECT ifadeler ve toplamalar takma adlar kullanmalıdır. GROUP BY sütun başvuruları takma ad gerektirmez.

-- Refresh nightly at 3:30 AM UTC.
-- The cron expression uses six space-separated fields: seconds minutes hours day-of-month month day-of-week
-- Use '?' for either day-of-month or day-of-week to leave it unspecified.
CREATE OR REPLACE MATERIALIZED VIEW daily_revenue_by_region
  SCHEDULE CRON '0 30 3 * * ?' AT TIME ZONE 'UTC'
AS SELECT
  date_trunc('day', order_time) AS sales_date,
  region,
  sum(revenue) AS total_revenue,
  count(*) AS order_count
FROM
  orders
GROUP BY sales_date, region;

SCHEDULE EVERY söz dizimi ve ek CRON örnekleri dahil olmak üzere daha fazla zamanlama seçeneği için Yenilemeleri zamanlama bölümüne bakın.

CREATE OR REPLACE MATERIALIZED VIEW deyimini kullanarak malzemeleştirilmiş bir görünüm oluşturduğunuzda, ilk veri yenileme ve veri doldurma işlemi hemen başlar. Bu, SQL ambarı işlem gücünü tüketmez. Bunun yerine, oluşturma ve sonraki yenilemeler için sunucusuz işlem hattı kullanılır. Bkz. Bağımsız somutlaştırılmış görünümler nasıl yenilenir?.

Temel tablodaki sütun açıklamaları, yalnızca oluşturmada otomatik olarak yeni oluşturulmuş görünüme yayılır. Zamanlama, tablo kısıtlamaları veya başka özellikler eklemek için gerçekleştirilmiş görünüm tanımını (SQL sorgusu) değiştirin.

Aynı SQL deyimi, sonraki bir zamanda veya zamanlamayla çağrıldığında malzemeleşmiş görünümü yeniler. Bu şekilde yapılan yenileme, başka tüm yenilemeler gibi işlev görür. Ayrıntılar için bkz. Gerçekleştirilmiş görünümü yenileme.

Bir somutlaştırılmış görünümün nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Tek başına somutlaştırılmış görünümleri yapılandırma. Gerçekleştirilmiş görünüm oluşturmaya yönelik söz diziminin tamamı hakkında bilgi edinmek için bkz CREATE MATERIALIZED VIEW. . Verileri farklı biçimlerde ve farklı yerlerden yükleme hakkında bilgi edinmek için bkz. İşlem hatlarına veri yükleme.

Dış sistemlerden veri yükleme

Desteklenen veri kaynakları için Lakehouse Federasyonu kullanılarak dış verilerde malzeme görünümleri oluşturulabilir. Lakehouse Federation tarafından desteklenmeyen kaynaklardan veri yükleme hakkında bilgi için bkz . Veri biçimi seçenekleri. Örnekler de dahil olmak üzere verileri yükleme hakkında genel bilgi için bkz . İşlem hatlarında veri yükleme.

Hassas verileri gizleme

Hassas verileri tabloya erişen kullanıcılardan gizlemek için maddi görünümleri kullanabilirsiniz. Bunu gerçekleştirmenin bir yolu, sorguyu oluşturarak ilk etapta bu verileri içermemesidir. Ancak sorgulayan kullanıcının izinlerine göre sütunları maskeleyebilir veya satırları filtreleyebilirsiniz. Örneğin, grubunda tax_idolmayan kullanıcıların sütununu gizleyebilirsinizHumanResourcesDept. Bunu yapmak için, malzeme görünümünün oluşturulması sırasında ROW FILTER ve MASK söz dizimini kullanın. Daha fazla bilgi için bkz. Satır filtreleri ve sütun maskeleri.

Gerçekleştirilmiş görünümü yenile

Gerçekleştirilmiş bir görünümün yenilenmesi, görünümü yenileme sırasında temel tabloda yapılan en son değişiklikleri yansıtacak şekilde güncelleştirir.

Gerçekleştirilmiş bir görünüm tanımladığınızda, CREATE OR REPLACE MATERIALIZED VIEW deyimi hem görünümü oluşturmak hem de zamanlanmış yenilemeler için yenilemek için kullanılır. REFRESH MATERIALIZED VIEW ifadesini, sorguyu yeniden sağlamanıza gerek kalmadan maddi görünümünü yenilemek için de kullanabilirsiniz. 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 ambara bağlı bir not defterini, Databricks SQL CLI veya Databricks SQL API kullanın.

Tablo üzerinde REFRESH ayrıcalığı verilmiş sahip ve tüm kullanıcılar, maddileştirilmiş görünümü yenileyebilir.

Aşağıdaki örnek mv1 gerçekleştirilmiş görünümü yeniler.

REFRESH MATERIALIZED VIEW mv1;

İşlem varsayılan olarak eşzamanlıdır, yani komut, yenileme işlemi tamamlanana kadar bekletilir. Zaman uyumsuz olarak yenilemek için anahtar sözcüğünü ASYNC ekleyebilirsiniz:

REFRESH MATERIALIZED VIEW mv1 ASYNC;

Yenilemenin nasıl zamanlanacağını öğrenmek için bkz. Yenilemeleri zamanlama.

Bağımsız somutlaştırılmış görünümler nasıl yenilenir?

Gerçekleştirilmiş görünümler, yenileme işlemlerini işlemek için sunucusuz işlem hatlarını otomatik olarak oluşturur ve kullanır. Yenileme 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, belirli bir zamanlama üzerinde çalışan bir pipeline kullanılarak güncelleştirilebilir. Bağımsız maddileştirilmiş görünümler her zaman tetiklenen modda çalışır. Bkz. Tetiklenen veya sürekli işlem hattı modu.

Zamanlanmış yenilemelerde güncelleştirme bildirimleri olabilir ve yenileme için performans modunu ayarlayabilirsiniz.

Kademeli yenileme

Gerçekleştirilmiş görünümler iki yöntemden biri kullanılarak yenilenir.

  • Artımlı yenileme - Sistem, son güncelleştirmeden sonra gerçekleşen değişiklikleri belirlemek için görünümün sorgusunu değerlendirir ve yalnızca yeni veya değiştirilmiş verileri birleştirir.
  • Tam yenileme - Artımlı yenileme gerçekleştirilemiyorsa veya uygun maliyetli değilse, sistem sorgunun tamamını çalıştırır ve gerçekleştirilmiş görünümdeki mevcut verileri yeni sonuçlarla değiştirir.

Sorgunun yapısı ve kaynak veri türü artımlı yenilemenin desteklenip desteklenmediğini belirler. Artımlı yenilemeyi desteklemek için kaynak verilerin satır izleme etkin delta tablolarında depolanması gerekir. Daha iyi artımlı yenileme performansı için değişiklik veri akışının etkinleştirilmesi önerilir. Sorgunun artımlı hale getirilebilir olup olmadığını görmek için Databricks SQL EXPLAIN CREATE MATERIALIZED VIEW deyimini kullanın. Gerçekleştirilmiş bir görünüm oluşturduktan sonra, artımlı olarak mı yoksa tam yenileme yoluyla mı güncelleştirildiğini doğrulamak için yenileme davranışını izleyebilirsiniz.

varsayılan olarak, Azure Databricks tam ve artımlı yenileme arasında daha uygun maliyetli seçeneği belirlemek için bir maliyet modeli kullanır. Gerçekleştirilmiş görünümün SQL tanımında bir REFRESH POLICY ayarlayarak bu davranışı artımlı veya tam yenilemeleri tercih etmek üzere geçersiz kılabilirsiniz.

Yenileme türleri ve artımlı yenilemeler için iyileştirme hakkında ayrıntılı bilgi için bkz. Gerçekleştirilmiş görünümler için artımlı yenileme.

Zaman uyumsuz yenilemeler

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, anahtar sözcüğüyle ASYNC refresh 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. Bir sonraki adım için sonuç gerekiyorsa (örneğin, Lakeflow Jobs gibi orkestrasyon araçlarında yenileme işlemlerini sıralarken) eşzamanlı 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. Bakınız Lakeflow İşleri.
  • Zaman uyumsuz: Zaman uyumsuz yenileme, gerçekleştirilmiş bir görünüm yenilemesi başladığında sunucusuz işlemde bir arka plan işi başlatır ve komutun veri yükü tamamlanmadan önce döndürülmesini sağlar. İşlemin, bilgisayar kapasitesini komutun başlatıldığı depoda tutmayabileceği için bu yenileme türü maliyetten tasarruf sağlayabilir. Yenileme boşta kalır ve başka hiçbir görev çalışmıyorsa, ambar, yenileme diğer kullanılabilir işlem gücünü kullanırken kapatılabilir. Ayrıca, zaman uyumsuz yenilemeler birden çok işlemin paralel olarak başlatılmasını destekler.

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.

Uyarı

  • Gerçekleştirilmiş görünümle REORG deyimi kullanmak için Databricks Runtime 15.4 ve üzeri gerekir.
  • deyimini REORG 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ş materyalize edilmiş bir görünümün temel alınan depolama alanından kayıtları fiziksel olarak silmek için, materyalize edilmiş görünümün verileri üzerinde bir VACUUM işleminin çalıştırılmasını sağlamak amacıyla ek adımlar atılmalıdır.

Kayıtları fiziksel olarak silmek için:

  1. REORG parametresini belirterek gerçekleştirilmiş görünümde bir APPLY (PURGE) deyimi çalıştırın. Örneğin REORG TABLE <materialized-view-name> APPLY (PURGE);. Bkz. REORG TABLE.
  2. 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.
  3. REFRESH gerçekleştirilmiş görünüm. Bkz. gerçekleştirilmiş görünümü yenileme. İşlemi izleyen 24 saat içinde, kayıtların REFRESH kalıcı olarak silinmesini sağlamak için gereken işlem dahil olmak üzere VACUUM işlem hattı bakım görevleri otomatik olarak çalıştırılır.

Gerçekleştirilmiş görünümü bırak

Uyarı

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. DROP deyimi göndermek için sql düzenleyicisini Azure Databricks kullanıcı arabiriminde, Databricks SQL CLI veya Databricks SQL API kullanabilirsiniz. Aşağıdaki örnek, maddi görünümü siler mv1 :

DROP MATERIALIZED VIEW mv1;

Maddileştirilmiş bir görünümü silmek için de Katalog Gezgini'ni kullanabilirsiniz.

  1. Veri simgesine tıklayın. Kenar çubuğunda katalog.
  2. Sol taraftaki Katalog Gezgini ağacında kataloğu açın ve gerçekleştirilmiş görünümünüzün bulunduğu şemayı seçin.
  3. Seçtiğiniz şemanın altındaki Tablolar öğesini açın ve gerçekleştirilmiş görünüme tıklayın.
  4. Kebap menüsünde Kebap menü simgesi., Sil'i seçin.

Gerçekleştirilmiş görünümün maliyetlerini anlama

CREATE MATERIALIZED VIEW veya REFRESH MATERIALIZED VIEW çalıştırdığınızda, Azure Databricks işlemi işlemek için otomatik olarak sunucusuz bir işlem hattı oluşturur ve çalıştırır. Bu işlem hattı, komutu gönderdiğiniz Databricks SQL ambarından veya işlem kaynağından bağımsızdır. Ambarınızın küme boyutu, yenileme tarafından kullanılan işlem veya maliyeti sınırlamaz.

  • Yenileme işlem hattı, sunucusuz işlem altyapısı üzerinde çalışır ve sunucusuz Lakeflow işlem hattı DBU’ları olarak faturalandırılır.
  • Sunucusuz işlem hattı ambarınızdan ayrıdır. Ambarınızdaki bilgisayar gücü yalnızca operasyonu koordine etmek için kullanılır, veri işlemeyi gerçekleştirmek için kullanılmaz.
  • Maliyet, SQL ambarınızın boyutuyla değil işlenen veri hacmiyle ölçeklendirilir.
  • Gerçekleştirilmiş görünüm yenileme maliyetlerini izlemek için sistem tablolarını kullanın. Bkz. Gerçekleştirilmiş bir görünümün veya akış tablosunun DBU tüketimi nedir?
  • Gerçekleştirilmiş görünümünüzü yöneten temel işlem hattını görüntülemek için:
    1. Azure Databricks çalışma alanınızın sol kenar çubuğundaki Jobs & Pipelines'a tıklayın.
    2. İşlem hattı türü'ne tıklayın. Ardından, bağımsız somutlaştırılmış görünümleri görmek için MV/ST seçeneğini belirleyin.

Uyarı

Kaynak ambar özgün işlem kullansa bile sunucusuz işlem maliyetleriyle karşılaşabilirsiniz.

Satır izlemeyi etkinleştirme

Delta tablolarından artımlı yenilemeleri desteklemek için, bu kaynak tablolarda satır izleme etkinleştirilmelidir. Kaynak tabloyu yeniden oluşturursanız, satır izlemeyi yeniden etkinleştirmeniz gerekir.

Aşağıdaki örnekte bir tabloda satır izlemeyi etkinleştirme gösterilmektedir:

ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);

Diğer ayrıntılar için bkz. Azure Databricks'de satır izleme

Sınırlama

  • İşlem seçenekleri ve çalışma alanı gereksinimleri için bkz . Tek başına işlem hatları için gereksinimler.
  • Artımlı yenileme gereksinimleri için bkz. Gerçekleştirilmiş görünümler için artımlı yenileme.
  • Gerçekleştirilmiş görünümler kimlik sütunlarını veya vekil anahtarları desteklemez.
  • Gerçekleştirilmiş bir görünüm, NULL sütununda toplam toplama kullanıyorsa ve bu sütunda yalnızca NULL değerler kalıyorsa, gerçekleştirilmiş görünümün sonuç toplama değeri NULL yerine 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, materyalize edilmiş 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ştirilen görünüm şemasının parçası olmayan yukarı akış tablolarından verileri açığa çıkarabileceğinden, bu yüzden Databricks, temel depolamanın güvenilmeyen aşağı akış tüketicileriyle paylaşılmaması gerektiğini önermektedir. Örneğin, malzemeleştirilmiş görünümün tanımının bir COUNT(DISTINCT field_a) ifadesi içerdiğini varsayalım. Gerçekleştirilmiş görünüm tanımı yalnızca toplama COUNT DISTINCT yan tümcesini içerse de, temel dosyalar gerçek değerlerinin field_a listesini içerir.
  • Bu özellikleri adanmış işlemde kullanırken bile sunucusuz işlem için bazı ücretler tahakkuk edebilir.
  • Eğer materyalize edilmiş görünümünüzle bir Azure Özel Bağlantı bağlantısı kullanmanız gerekiyorsa Databricks temsilcinize başvurun.

Dış istemcilerden maddileştirilmiş görünümlere erişme

Açık API'leri desteklemeyen dış Delta Lake veya Iceberg istemcilerinden gerçekleştirilmiş görünümlere erişmek için Uyumluluk Modu'nu kullanabilirsiniz. Uyumluluk Modu, gerçekleştirilmiş görünümünüzün herhangi bir Delta Lake veya Iceberg istemcisi tarafından erişilebilen salt okunur bir sürümünü oluşturur.

Ek kaynaklar