Dela via


REFRESH POLICY-sats (pipelines)

Viktigt!

Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.

Lägger till en uppdateringsprincip i den materialiserade vyn och styr när uppdateringen ska inkrementelliseras. Gäller för -instruktionen CREATE MATERIALIZED VIEW (pipelines).

Mer information om inkrementellisering finns i Inkrementell uppdatering för materialiserade vyer. Du kan kontrollera om en SQL-fråga är inkrementell med -instruktionen EXPLAIN CREATE MATERIALIZED VIEW i Databricks SQL. Se även EXPLAIN CREATE MATERIALIZED VIEW.

Syntax

REFRESH POLICY refresh_policy

refresh_policy:
  AUTO | INCREMENTAL | INCREMENTAL STRICT | FULL

Parameterar

  • refresh_policy

    Definierar en uppdateringsprincip för den materialiserade vyn. Om utelämnas REFRESH POLICYAUTO är standardprincipen.

    Uppdateringsprincipen definierar hur en uppdatering hanterar inkrementellisering av den materialiserade vyn.

    • AUTO

      Systemet väljer automatiskt inkrementell eller fullständig uppdatering baserat på kostnadsmodellen.

      Stat/län Beteende
      Inkrementell är tillgängligt för uppdateringen. Använder kostnadsmodellen för att avgöra vilken som är billigare, inkrementell eller fullständig.
      Inkrementell är inte tillgängligt för uppdatering. Utför en fullständig uppdatering.
      Skapa eller återinitiering krävs (till exempel vid schemaändring) Utför en fullständig uppdatering.
    • INCREMENTAL

      Systemet använder inkrementella uppdateringar när det är möjligt. På CREATEmisslyckas create-instruktionen om frågan inte kan inkrementelliseras.

      Stat/län Beteende
      Inkrementell är tillgängligt för uppdateringen. Utför en inkrementell uppdatering.
      Inkrementell är inte tillgängligt för uppdateringen. Utför en fullständig uppdatering.
      Skapa eller återinitiering krävs, men inkrementellisering är möjlig för frågan. Utför en fullständig uppdatering.
      Skapa eller återinitiering krävs och inkrementellisering är inte möjligt för frågan. Åtgärden misslyckas.
    • INCREMENTAL STRICT

      Systemet använder inkrementella uppdateringar. På CREATEmisslyckas create-instruktionen om frågan inte kan inkrementelliseras.

      Stat/län Beteende
      Inkrementell är tillgängligt för uppdateringen. Utför en inkrementell uppdatering.
      Inkrementell är inte tillgängligt för uppdateringen. Uppdateringen misslyckas.
      Skapa eller återinitiering krävs, men inkrementellisering är möjlig för frågan. Utför en fullständig uppdatering.
      Skapa eller återinitiering krävs och inkrementellisering är inte möjligt för frågan. Åtgärden misslyckas.
    • FULL

      Systemet använder alltid en fullständig uppdatering.

      Stat/län Beteende
      Inkrementell är tillgängligt för uppdateringen. Utför en fullständig uppdatering.
      Inkrementell är inte tillgängligt för uppdateringen. Utför en fullständig uppdatering.
      Skapa eller återinitiering krävs. Utför en fullständig uppdatering.

Beteende vid fel

När en uppdatering misslyckas eftersom den inte kan uppfylla uppdateringsprincipen (för REFRESH POLICY INCREMENTAL (STRICT)) returnerar systemet en felklass MATERIALIZED_VIEW_NOT_INCREMENTALIZABLE med detaljerad information som beskriver orsaken till att den inte är inkrementell:

  • AGGREGATE_NOT_TOP_NODE: GROUP BY med komplexa uttryck ovan stöds det inte.
  • EXPRESSION_NOT_DETERMINSTIC: En icke-deterministisk funktion, som RAND, används i frågan.
  • INPUT_NOT_IN_DELTA: En eller flera källdatauppsättningar är inte Delta-tabeller.
  • OPERATOR_NOT_INCREMENTALIZABLE: En operator, till exempel en komplex koppling, förhindrar inkrementellisering.
  • ROW_TRACKING_NOT_ENABLED: Källtabeller som kräver radspårning har inte radspårning aktiverat.
  • SUBQUERY_EXPRESSION_NOT_INCREMENTALIZABLE: En eller flera underfrågor i frågan kan inte inkrementelliseras.
  • UDF_NOT_DETERMINISTIC: En eller flera UDF:er som används i uttrycket markeras inte som deterministiska.
  • WINDOW_WITHOUT_PARTITION_BY: Fönsterspecifikationer utan PARTITION_BY är inte inkrementella.

Information om vad som gör en fråga inkrementell kan göras finns i Inkrementell uppdatering för materialiserade vyer.

Om du vill kontrollera om en SQL-fråga är inkrementell kan du använda -instruktionen EXPLAIN CREATE MATERIALIZED VIEW i Databricks SQL. Se även EXPLAIN CREATE MATERIALIZED VIEW.

Examples

-- Create a materialized view with an incremental policy
CREATE OR REFRESH MATERIALIZED VIEW my_mv
REFRESH POLICY INCREMENTAL
AS SELECT a, sum(b) FROM my_catalog.example.my_table GROUP BY a;