EXPLAIN CREATE MATERIALIZED VIEW

Şunun için geçerlidir:işaretli evet Databricks SQL işaretli evet 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. ve FULL yenileme politikaları altındaAUTO, maddeleştirilmiş görünüm tam bir yeniden hesaplama kullanır. INCREMENTAL Altında veya INCREMENTAL STRICT, CREATE başarısız olur çünkü kademeli yenileme mümkün değildir. Bölüm, Detailed Incrementalization Info artı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 VIEW Lakeflow işlem hatlarından gelen sorgular güncelleştirme olmadan ile EXPLAIN çalışmayabilir. Örneğin:

    • Beklentiler (CONSTRAINT...EXPECT yan 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.

Ö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 INCREMENTAL tabanlı 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_MODEL bakın. Detaylar için, Pipeline olay günlüğü ve CostModelRejectionSubTypePipeline 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_EXCEEDED ve TABLE_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.