Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime 17.3 och senare
Rapporterar om frågan om en materialiserad vy kan uppdateras stegvis. Förbered EXPLAIN på ett CREATE MATERIALIZED VIEW uttalande för att kontrollera inkrementaliseringsbehörighet innan du skapar den materialiserade vyn eller kör en dyr uppdatering.
För att lära sig om inkrementalisering av materialiserade vyer, se Inkrementell uppdatering för materialiserade vyer.
Vilka EXPLAIN rapporter
EXPLAIN CREATE MATERIALIZED VIEW Kontrollerar om frågan är strukturellt berättigad till inkrementell uppdatering. Avsnittet Incremental Update Eligibility med utdata rapporterar ett av två resultat:
-
The Materialized View can be incrementally refreshed: Frågemönstret stöder inkrementell uppdatering. -
The Materialized View cannot be incrementally refreshed: Frågan är strukturellt inte berättigad till inkrementell uppdatering. Under ochFULLuppdatera-policyernaAUTOanvänder den materialiserade vyn en fullständig omberäkning. UnderINCREMENTALellerINCREMENTAL STRICT, misslyckas eftersomCREATEinkrementell uppdatering inte är möjlig. AvsnittetDetailed Incrementalization Infolistar vad som förhindrar inkrementellisering.
Strukturell behörighet är ingen garanti för att en inkrementell uppdatering genomförs. Under standarduppdateringspolicyn AUTO fattar kostnadsmodellen det slutgiltiga beslutet vid körning och kan fortfarande välja en fullständig omberäkning för en berättigad materialiserad vy. För detaljer, se Behörighet och körbeteende.
När du ska använda EXPLAIN
Kör EXPLAIN CREATE MATERIALIZED VIEW:
- Innan du distribuerar en ny materialiserad vy, för att verifiera att frågemönstret stödjer inkrementell uppdatering.
- När du felsöker långsam uppdateringar för att bekräfta att den materialiserade vyn är berättigad. Om det inte är det, skriv om frågan.
- Efter att du skrivit om en fråga, för att verifiera att den nya versionen är berättigad.
- När du migrerar från DBT eller något annat verktyg, för att validera att de transformerade frågorna gynnas av inkrementell uppdatering.
Syntax
EXPLAIN [CREATE MATERIALIZED VIEW query]
Parameterar
fråga
En SQL-fråga som skapar en materialiserad vy. Inleda
EXPLAINfrågan.Anmärkning
CREATE MATERIALIZED VIEWfrågor från Lakeflow-pipelines kanske inte fungerar medEXPLAINutan uppdatering. Till exempel:- Förväntningar (
CONSTRAINT...EXPECT-satser) måste tas bort från frågan. - Källdatauppsättningar kan behöva kvalificeras med en katalog, ett schema eller en annan sökväg som inte behövs när den körs i kontexten för en pipeline.
- Förväntningar (
Examples
Följande exempel visar utdata för en berättigad fråga och för två frågor som inte kan uppdateras inkrementellt.
Berättigad till inkrementell uppdatering
En fråga som applicerar ett filter, projektion och aggregering på en Delta Lake-tabell är berättigad:
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.
Ej berättigad: användningsområden LIMIT
En fråga som använder LIMIT är inte inkrementaliserbar, eftersom gränsoperatorer inte kan underhållas inkrementellt:
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.
Ej berättigad: källa som inte är från Delta Lake
En fråga som läser från en icke-Delta Lake-källa, såsom CSV-filer, är inte inkrementellierbar:
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.
Behörighet och körbeteende
EXPLAIN rapporterar om frågestrukturen stödjer inkrementell uppdatering. Den förutspår inte vad optimeraren gör vid körning. Under standarden REFRESH POLICY AUTOfattar kostnadsmodellen det slutgiltiga beslutet och kan välja en fullständig omberäkning även för en berättigad materialiserad vy, till exempel när den uppskattar att operatorinbäddning eller den aktuella datavolymen gör en fullständig omberäkning mer effektiv. För hela listan över uppdateringspolicys, se Uppdateringspolicy.
Om en berättigad materialiserad vy konsekvent använder full omberäkning under AUTO, kan du:
- Ställ
REFRESH POLICY INCREMENTALin att föredra inkrementell uppdatering framför kostnadsbaserad uppfräschning. För syntax, se REFRESH POLICY-klausulen. - Kontrollera pipeline-händelseloggen för
INCREMENTAL_PLAN_REJECTED_BY_COST_MODELhändelser för att förstå varför kostnadsmodellen avvisade den inkrementella planen. För detaljer, se Pipeline-händelselogg och värdenaCostModelRejectionSubTypei Pipeline-händelseloggschema.
Vanliga skäl till avslag på kostnadsmodeller inkluderar:
-
EXCESSIVE_OPERATOR_NESTING: Frågedefinitionen är komplex och har många nivåer av operatorinbäddning, vilket kostnadsmodellen anser vara riskfyllt för inkrementell bearbetning. -
CHANGESET_SIZE_THRESHOLD_EXCEEDEDochTABLE_SIZE_THRESHOLD_EXCEEDED: Kostnadsmodellen uppskattar att en fullständig omberäkning är billigare för den aktuella datavolymen.
Ett avslag på kostnadsmodellen betyder inte att den materialiserade synen inte kan inkrementaliseras. Det betyder att optimeraren valde att inte göra det. Inställning REFRESH POLICY INCREMENTAL är ett stödjande sätt att åsidosätta det valet.