Aracılığıyla paylaş


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

Önemli

Bu özellik Genel Önizlemededir.

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 başlatılmasıyla Databricks Veri Zekası Platformu'nda 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 ve yenilemek için Unity Kataloğu özellikli databricks SQL ambarı kullanmanız gerekir.

  • Çalışma alanınız sunucusuz etkinleştirilmiş bir bölgede olmalıdır.

Databricks SQL ile gerçekleştirilmiş görünümleri kullanma kısıtlamaları hakkında bilgi edinmek için bkz . Sınırlamalar.

Gerçekleştirilmiş görünüm oluşturma

Gerçekleştirilmiş görünüm oluşturmak için deyimini CREATE MATERIALIZED VIEW kullanın. Databricks SQL başvurusunda CREATE MATERIALIZED VIEW bölümüne bakı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 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;

Gerçekleştirilmiş görünümler nasıl oluşturulur?

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 Databricks SQL ambarında zaman uyumlu bir işlem olduğundan, komut gerçekleştirilmiş CREATE MATERIALIZED VIEW görünüm oluşturulana ve ilk veri yükü bitene kadar engeller. Her Databricks SQL gerçekleştirilmiş görünümü için bir Delta Live Tables işlem hattı otomatik olarak oluşturulur. Gerçekleştirilmiş görünüm yenilendiğinde, yenilemeyi işlemek için Delta Live Tables işlem hattına yönelik bir güncelleştirme başlatılır.

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. Gerçekleştirilmiş bir görünümü yenilemek için deyimini REFRESH MATERIALIZED VIEW kullanın. Databricks SQL başvurusunda REFRESH (MATERIALIZED VIEW and STREAMING TABLE) bölümüne bakın. Yenileme deyimi göndermek için Azure Databricks kullanıcı arabirimi, Databricks SQL CLI veya Databricks SQL API'sindeki SQL düzenleyicisini 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 Delta Live Tables işlem hatlarını otomatik olarak oluşturur ve kullanır. Yenileme bir Delta Live Tables işlem hattı tarafından yönetildiğinden, gerçekleştirilmiş görünümü oluşturmak için kullanılan Databricks SQL ambarı kullanılmaz ve yenileme işlemi sırasında çalıştırılması gerekmez.

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 iş akışları gibi bir düzenleme aracında sıralamanıza olanak tanır. Gerçekleştirilmiş görünümleri iş akışlarıyla yönetmek için SQL görev türünü kullanın. Bkz . Azure Databricks İş Akışlarına Giriş.
  • 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. Delta Live Tables işlem hattı yenilemeyi yönettiğinden, gerçekleştirilmiş görünümü oluşturmak için kullanılan Databricks SQL ambarı kullanılmaz. Yenileme işlemi sırasında çalışması gerekmez.

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. Gerçekleştirilmiş görünümü oluştururken veya ALTER VIEW deyimiyle bir zamanlama eklerken bu SCHEDULE zamanlamayı yan tümcesiyle yapılandırı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ı deyimiyle DESCRIBE EXTENDED istediğiniz zaman görüntüleyebilirsiniz.

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üzenleyicisinikullanabilirsiniz. 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 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:

  • KOMUTU SQL düzenleyicisinde gönderirseniz REFRESH Sonuçlar panelindeki bağlantıyı izleyin.
  • deyimi tarafından DESCRIBE EXTENDED döndürülen bağlantıyı izleyin.
  • 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.

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 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:

  • İş Akışları'na İşler Simgesive ardından Delta Live Tablolar sekmesine tıklayın.
  • Sahibini değiştirmek istediğiniz işlem hattının adı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

  • MV'lerin nasıl yönetilebileceği ve nerede sorgulanabileceğiyle ilgili kısıtlamalar vardır:

    • Databricks SQL gerçekleştirilmiş görünümleri yalnızca profesyonel SQL ambarlarında ve sunucusuz SQL ambarlarında oluşturulabilir ve yenilenebilir.
    • Databricks SQL gerçekleştirilmiş görünümü yalnızca onu oluşturan çalışma alanından yenilenebilir.
    • Databricks SQL gerçekleştirilmiş görünümleri yalnızca Databricks SQL ambarlarından, Delta Live Tablolarından ve Databricks Runtime 11.3 veya üzerini çalıştıran paylaşılan kümelerden sorgulanabilir. Tek Kullanıcı erişim modu kümelerinden gerçekleştirilmiş görünümleri sorgulayamazsınız.
  • 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.

  • 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.

  • Databricks SQL gerçekleştirilmiş görünümleri Orta Güney ABD ve Batı ABD 2 bölgelerinde desteklenmez.