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.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 17.3 ve üzeri
Maddeleştirilmiş bir görünüm için sorgunun kademeli olarak yenilenemeyeceğini bildirir. Maddeleştirilmiş görünümü oluşturmadan veya pahalı bir yenileme yapmadan önce artım uygunluğunu kontrol etmek için bir CREATE MATERIALIZED VIEW ifade ekleyinEXPLAIN.
Gerçekleştirilmiş görünümü artımlı hale getirme hakkında bilgi edinmek için bkz. Gerçekleştirilmiş görünümler için artımlı yenileme.
Hangi EXPLAIN raporlar
EXPLAIN CREATE MATERIALIZED VIEW sorgu yapısal olarak kademeli yenileme için uygun olup olmadığını kontrol eder. Çıktı Incremental Update Eligibility bölümü iki sonuçtan birini bildirir:
-
The Materialized View can be incrementally refreshed: Sorgu deseni kademeli yenilemeyi destekler. -
The Materialized View cannot be incrementally refreshed: Sorgu, yapısal olarak kademeli yenileme için uygun değildir. veFULLyenileme politikaları altındaAUTO, maddeleştirilmiş görünüm tam bir yeniden hesaplama kullanır.INCREMENTALAltında veyaINCREMENTAL STRICT,CREATEbaşarısız olur çünkü kademeli yenileme mümkün değildir. Bölüm,Detailed Incrementalization Infoartımlanmayı engelleyen şeyleri listeler.
Yapısal uygunluk, kademeli bir yenilemenin geçerli olacağına dair bir garanti değildir. Varsayılan AUTO yenileme politikası altında, maliyet modeli nihai kararı çalışma zamanında verir ve uygun bir maddeleştirilmiş görünüm için tam bir yeniden hesaplama seçebilir. Detaylar için Uygunluk ve çalışma zamanı davranışı bölümlerine bakınız.
EXPLAIN ne zaman kullanılmalı?
komutunu çalıştırın EXPLAIN CREATE MATERIALIZED VIEW:
- Yeni bir maddeleştirilmiş görünüm dağıtmadan önce, sorgu deseninin artımlı yenilemeyi desteklediğini doğrulamak için.
- Ayıklama yaptığınızda, malzemeye ulaşmış görünümün uygun olup olmadığını doğrulamak için yavaş yenilemeler yapılır. Eğer değilse, sorguyu yeniden yaz.
- Bir sorguyu yeniden yazdıktan sonra, yeni sürümün uygun olup olmadığını doğrulamak için.
- DBT veya başka bir araçtan geçiş yaparken, dönüştürülmüş sorguların artımlı yenilemeden fayda sağladığını doğrulamak için.
Sözdizimi
EXPLAIN [CREATE MATERIALIZED VIEW query]
Parametreler
query
Gerçekleştirilmiş görünüm oluşturan bir SQL sorgusu. Sormaya başla
EXPLAIN.Uyarı
CREATE MATERIALIZED VIEWLakeflow işlem hatlarından gelen sorgular güncelleştirme olmadan ileEXPLAINçalışmayabilir. Örneğin:- Beklentiler (
CONSTRAINT...EXPECTyan tümceler) sorgudan kaldırılmalıdır. - Kaynak veri kümelerinin bir işlem hattı bağlamında çalıştırıldığında gerekmeyen bir katalog, şema veya başka bir yol ile nitelenmiş olması gerekebilir.
- Beklentiler (
Örnekler
Aşağıdaki örnekler, uygun bir sorgu ve kademeli olarak yenilenemeyen iki sorgu için çıktıyı gösterir.
Artan yenileme için uygundur
Delta Lake tablosuna filtre, projeksiyon ve toplama uygulayan bir sorgu uygundur:
EXPLAIN CREATE MATERIALIZED VIEW sales_summary AS
SELECT region, SUM(revenue) AS total_revenue, COUNT(*) AS order_count
FROM catalog.schema.orders
WHERE order_date >= '2024-01-01'
GROUP BY region;
== Incremental Update Eligibility ==
The Materialized View can be incrementally refreshed.
== Detailed Incrementalization Info ==
No issues detected.
Uygun değil: kullanımlar LIMIT
Kullanılan LIMIT bir sorgu artırılabilir değildir, çünkü limit operatörleri kademeli olarak korunamaz:
EXPLAIN CREATE MATERIALIZED VIEW top_customers AS
SELECT customer_id, total_spend
FROM catalog.schema.customer_summary
ORDER BY total_spend DESC
LIMIT 100;
== Incremental Update Eligibility ==
The Materialized View cannot be incrementally refreshed.
== Detailed Incrementalization Info ==
- OPERATOR_NOT_INCREMENTALIZABLE: Operators GlobalLimit, LocalLimit are not incrementalizable. Consider rewriting the query to avoid using them.
Uygun değil: Delta Gölü olmayan kaynak
CSV dosyaları gibi Delta Lake dışı bir kaynaktan okunan bir sorgu, artımlanabilir değildir:
EXPLAIN CREATE MATERIALIZED VIEW external_data AS
SELECT * FROM csv.`/path/to/files/`;
== Incremental Update Eligibility ==
The Materialized View cannot be incrementally refreshed.
== Detailed Incrementalization Info ==
- INPUT_NOT_IN_DELTA: Tables are not in Delta format. Consider converting them to Delta tables.
Uygunluk ve çalışma zamanı davranışı
EXPLAIN sorgu yapısının artımlı yenilemeyi destekleyip desteklemediğini bildirir. Optimize edicinin çalışma zamanında ne yaptığını tahmin etmez. Varsayılan REFRESH POLICY AUTOdurumda, maliyet modeli nihai kararı verir ve uygun bir maddeleştirilmiş görünüm için bile tam bir yeniden hesaplama seçebilir; örneğin, operatör iç içe geçirmesi veya mevcut veri hacmi tam yeniden hesaplamayı daha verimli hale getirdiğini tahmin ettiğinde. Yenileme politikalarının tam listesi için Yenileme politikası sayfasına bakınız.
Uygun bir maddeleştirilmiş görünüm tutarlı şekilde tam yeniden hesaplama kullanırsa AUTO, şunları yapabilirsiniz:
- Maliyet
REFRESH POLICY INCREMENTALtabanlı seçime göre kademeli yenilemeyi tercih edecek. Sözdizimi için bkz. REFRESH POLICY maddesi. - Maliyet modelinin neden artan planı reddettiğini anlamak için olaylar için boru hattı olay günlüğüne
INCREMENTAL_PLAN_REJECTED_BY_COST_MODELbakın. Detaylar için, Pipeline olay günlüğü veCostModelRejectionSubTypePipeline olay logu şemasındaki değerlere bakınız.
Yaygın maliyet modeli reddetme nedenleri şunlardır:
-
EXCESSIVE_OPERATOR_NESTING: Sorgu tanımı karmaşıktır ve maliyet modeli tarafından artımlı işlem için riskli olarak kabul edilen birçok operatör iç içe geçirme seviyesine sahiptir. -
CHANGESET_SIZE_THRESHOLD_EXCEEDEDveTABLE_SIZE_THRESHOLD_EXCEEDED: Maliyet modeli, mevcut veri hacmi için tam bir yeniden hesaplamanın daha ucuz olduğunu tahmin eder.
Maliyet modeli reddi, maddeleşmiş görünümün artımla kadememeyeceği anlamına gelmez. Bu, optimizatorun bunu yapmamayı seçtiği anlamına gelir. Ayar REFRESH POLICY INCREMENTAL bu seçeneği geçersiz kılmanın destekli bir yoludur.