EXPLAIN CREATE MATERIALIZED VIEW

Platí pro:označeno jako ano Databricks SQL označeno jako ano 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ámci AUTO politik a FULL refresh používá materializovaný pohled kompletní recompute. Pod INCREMENTAL nebo INCREMENTAL STRICT, neuspěje, CREATE protože inkrementální obnova není možná. Tato sekce Detailed Incrementalization Info uvá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 EXPLAIN se na dotaz.

    Poznámka:

    CREATE MATERIALIZED VIEW Dotazy z kanálů Lakeflow nemusí bez aktualizace fungovat EXPLAIN . Například:

    • Z dotazu musí být odebrána očekávání (CONSTRAINT...EXPECT klauzule).
    • 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.

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 INCREMENTAL si 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 a CostModelRejectionSubType hodnoty 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_EXCEEDED a TABLE_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.