Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime 17.3 a vyšší
Uvádí, zda lze dotaz pro materializovaný pohled postupně obnovovat. Připravte EXPLAIN se na prohlášení, CREATE MATERIALIZED VIEW abyste zkontrolovali způsobilost inkrementalizace, než vytvoříte materializovaný pohled nebo provedete drahou obnovu.
Informace o inkrementalizaci materializovaného zobrazení najdete v tématu Přírůstková aktualizace materializovaných zobrazení.
Jaké EXPLAIN zprávy
EXPLAIN CREATE MATERIALIZED VIEW Kontroluje, zda je dotaz strukturálně způsobilý pro postupnou obnovu. Část Incremental Update Eligibility výstupu uvádí jeden ze dvou výsledků:
-
The Materialized View can be incrementally refreshed: Vzor dotazů podporuje inkrementální obnovu. -
The Materialized View cannot be incrementally refreshed: Dotaz není strukturálně způsobilý pro inkrementální obnovu. V rámciAUTOpolitik aFULLrefresh používá materializovaný pohled kompletní recompute. PodINCREMENTALneboINCREMENTAL STRICT, neuspěje,CREATEprotože inkrementální obnova není možná. Tato sekceDetailed Incrementalization Infouvádí, co zabraňuje inkrementalizaci.
Strukturální způsobilost není zárukou, že postupná obnova proběhne. Podle výchozí AUTO politiky obnovy učiní nákladový model konečné rozhodnutí za běhu a stále může zvolit kompletní přepočet pro způsobilý materializovaný pohled. Podrobnosti najdete v článku Způsobilost a chování v čase běhu.
Kdy použít atribut EXPLAIN
Spusťte EXPLAIN CREATE MATERIALIZED VIEW:
- Než nasadíte nový materializovaný pohled, ověřte, že dotazovací vzor podporuje inkrementální obnovu.
- Když ladíte pomalé obnovy, abyste potvrdili, že je materializovaný pohled způsobilý. Pokud ne, přepište dotaz.
- Po přepisu dotazu ověřujete, že nová verze je způsobilá.
- Když migrujete z DBT nebo jiného nástroje, ověřte, že transformované dotazy těží z postupné obnovy.
Syntaxe
EXPLAIN [CREATE MATERIALIZED VIEW query]
Parametry
query
Dotaz SQL, který vytvoří materializované zobrazení. Připravte
EXPLAINse na dotaz.Poznámka:
CREATE MATERIALIZED VIEWDotazy z kanálů Lakeflow nemusí bez aktualizace fungovatEXPLAIN. Například:- Z dotazu musí být odebrána očekávání (
CONSTRAINT...EXPECTklauzule). - Zdrojové datové sady mohou být potřeba kvalifikovat pomocí katalogu, schématu nebo jiné cesty, která není nutná při spuštění v kontextu kanálu.
- Z dotazu musí být odebrána očekávání (
Examples
Následující příklady ukazují výstup pro způsobilý dotaz a pro dva dotazy, které nelze postupně obnovit.
Způsobilé pro postupné obnovení
Dotaz, který aplikuje filtr, projekci a agregaci na tabulku Delta Lake, je způsobilý:
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.
Nezpůsobilé: použití LIMIT
Dotaz, který používá , LIMIT není inkrementalizovatelný, protože limitní operátory nelze udržovat inkrementálně:
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.
Nezpůsobilé: zdroj mimo Delta Lake
Dotaz, který čte ze zdroje mimo Delta Lake, například z CSV souborů, není inkrementalizovatelný:
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.
Způsobilost a chování za běhu
EXPLAIN uvádí, zda struktura dotazu podporuje inkrementální obnovu. Nepředpovídá, co optimalizátor dělá za běhu. Ve výchozím REFRESH POLICY AUTOnastavení , nákladový model učiní konečné rozhodnutí a může zvolit kompletní přepočítání i pro způsobilý materializovaný pohled, například když odhadne, že vnoření operátorů nebo aktuální objem dat zefektivní plné přepočítání. Úplný seznam pravidel obnovy najdete v článku Politika obnovy.
Pokud způsobilý materializovaný pohled konzistentně používá plné přepočítání pod AUTO, můžete:
- Nastavte
REFRESH POLICY INCREMENTALsi preferenci na postupné obnovování před volbou založenou na nákladech. Pro syntaxi viz REFRESH klauzule POLITIKA. - Zkontrolujte v pipeline event log události
INCREMENTAL_PLAN_REJECTED_BY_COST_MODEL, abyste pochopili, proč nákladový model inkrementální plán odmítl. Podrobnosti viz Pipeline event log aCostModelRejectionSubTypehodnoty v schématu pipeline event log.
Běžné důvody odmítnutí nákladového modelu zahrnují:
-
EXCESSIVE_OPERATOR_NESTING: Definice dotazu je složitá a má mnoho úrovní vnoření operátorů, což nákladový model považuje za rizikové pro inkrementální zpracování. -
CHANGESET_SIZE_THRESHOLD_EXCEEDEDaTABLE_SIZE_THRESHOLD_EXCEEDED: Nákladový model odhaduje, že kompletní přepočítání je levnější vzhledem k aktuálnímu objemu dat.
Odmítnutí nákladového modelu neznamená, že materializovaný pohled nemůže postupně postupně růst. To znamená, že optimalizátor se rozhodl ne. Nastavení REFRESH POLICY INCREMENTAL je podporovaný způsob, jak tuto volbu překonat.