Aracılığıyla paylaş


Databricks SQL'de gerçekleştirilmiş görünümleri kullanma

  • Gerçekleştirilmiş görünümünüzle Azure Özel Bağlantı bir bağlantı kullanmanız gerekiyorsa Databricks temsilcinize başvurun.

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.

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, yenilemeleri gerçekleştirilmiş görünümde işlemek için bir Delta Live Tables işlem hattı oluşturulur. Yenileme işlemlerinin durumunu Delta Live Tables kullanıcı arabiriminde, Delta Live Tables API'sinde veya Delta Live Tables CLI'da 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 ve USE SCHEMA üstleriyle birlikte sahip USE 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ılı erişim modu. Bkz . Tek kullanıcılı işlemde ayrıntılı erişim denetimi
    • Yalnızca gerçekleştirilmiş görünüm sahibiyseniz: Databricks Runtime 15.3 ve altında çalışan tek kullanıcılı 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.

Söz dizimi ve parametrelerle ilgili ayrıntılar için bkz . CREATE MATERIALIZED VIEW.

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 ve USE SCHEMA gerçekleştirilmiş görünüm için kaynak tabloları içeren şema ve katalog ayrıcalıkları.
  • USE CATALOG ve USE SCHEMA gerçekleştirilmiş görünüm için hedef katalog ve şemadaki ayrıcalıklar.
  • CREATE TABLE ve CREATE MATERIALIZED VIEW gerçekleştirilmiş görünümü içeren şemadaki ayrıcalıklar.

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

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date, sum(sales) AS sum_of_sales
FROM
  table1
GROUP BY
  date;

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 parametreleri hakkında ayrıntılı bilgi için bkz . YENİLEME (GERÇEKLEŞTIRILMIŞ GÖRÜNÜM veya AKıŞ TABLOSU ). 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 yenileme işlemleri.

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.

Delta Live Tables işlem hatları sürekli veya tetiklenen yürütme modunu kullanır. Gerçekleştirilmiş görünümler her iki yürütme modunda da güncelleştirilebilir. Sürekli yürütme modunda çalışırken gereksiz işlemeyi önlemek için işlem hatları bağımlı Delta tablolarını otomatik olarak izler ve yalnızca bu bağımlı tabloların içeriği değiştiğinde bir güncelleştirme gerçekleştirir. Bkz . Delta Live Tables işlem hattı nedir?.

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. Her yaklaşımla ilişkili davranış aşağıdaki gibidir:

  • Zaman uyumlu: Zaman uyumlu yenileme, yenileme işlemi tamamlanana kadar diğer işlemleri engeller. Bu, yenileme işlemlerini İşler gibi bir düzenleme aracında sıralamanıza olanak tanır. İşler ile gerçekleştirilmiş görünümleri yönetmek için SQL görev türünü kullanın. Bkz. İş Akışlarını zamanlama ve düzenleme.
  • Zaman uyumsuz: Zaman uyumsuz yenileme, gerçekleştirilmiş görünüm yenilemesi başladığında Delta Live Tables işleminde bir arka plan işi başlatır ve komut veri yükü tamamlanmadan önce döner.

Bazı sorgular artımlı olarak yenilenebilir. Bkz . Gerçekleştirilmiş görünümler için yenileme işlemleri. 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:

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 DESCRIBE EXTENDED döndürülen Yenileme Bilgileri'ni görüntüleyerek 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.

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 bağlantıyı kopyalayıp yapıştırınDESCRIBE EXTENDED.
  • 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.

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

Not

Gerçekleştirilmiş görünümü bırakma komutunu göndermek için bu gerçekleştirilmiş görünümün sahibi olmanız gerekir.

Gerçekleştirilmiş görünümü bırakmak 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.
  • Kebap menüsü İşlem hattı adının sağındaki kebap menüsüne tıklayın ve İzinler'e tıklayın. Bu, izinler iletişim kutusunu açar.
  • 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 diğer kullanıcılara ayrıcalıklar verebilir SELECT . 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 olabilir SELECT .
  • REFRESH - kullanıcı gerçekleştirilmiş görünüme sahip olabilir REFRESH . 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;

SELECT Temel tablodaki ayrıcalıklar gerçekleştirilmiş görünüm sahibinden veya gerçekleştirilmiş görünüme ayrıcalıkları verilmiş SELECT 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 kullanıcı tarafından erişim izni verilen 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 mv1ayrıcalığı SELECT 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?.

Artımlı yenilemenin mi yoksa tam yenilemenin mi kullanıldığını belirleme

Gerçekleştirilmiş görünüm yenilemelerinin performansını iyileştirmek için Azure Databricks, yenileme için kullanılan tekniği seçmek üzere bir maliyet modeli kullanır. Aşağıdaki tabloda bu teknikler açıklanmaktadır:

Teknik Artımlı yenileme mi? Açıklama
FULL_RECOMPUTE Hayır Gerçekleştirilmiş görünüm tamamen yeniden derlendi
NO_OP Uygulanamaz Temel tabloda değişiklik algılanmadığından gerçekleştirilmiş görünüm güncelleştirilmedi.
ROW_BASED veya PARTITION_OVERWRITE Yes Gerçekleştirilmiş görünüm, belirtilen teknik kullanılarak artımlı olarak yenilendi.

Kullanılan tekniği belirlemek için Delta Live Tables olay günlüğünü sorgular ve burada event_type :planning_information

SELECT
  timestamp,
  message
FROM
  event_log(TABLE(<fully-qualified-table-name>))
WHERE
  event_type = 'planning_information'
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 NULLtoplam toplama kullanılıyorsa ve bu sütunda yalnızca NULL değerler kalıyorsa, gerçekleştirilmiş görünüm sonuç toplama değeri yerine NULLsı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ü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 toplama COUNT DISTINCT yan tümcesini içerse de, temel dosyalar gerçek değerlerinin field_alistesini içerir.