Dela via


REFRESH POLICY-sats

gäller för:markerad med ja Databricks SQL markerad med ja Databricks Runtime

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 .

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 . 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. Om CREATEfrågan inte går att inkrementellisera i misslyckas skapande.

      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. Om CREATEfrågan inte går att inkrementellisera i misslyckas skapande.

      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. Till exempel:

  • OPERATOR_NOT_SUPPORTED: En operator, till exempel en komplex koppling, förhindrar inkrementellisering.
  • EXPRESSION_NOT_DETERMINSTIC: En icke-deterministisk funktion, som RAND, används i frågan.

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 EXPLAINCREATE MATERIALIZED VIEW . Se även EXPLAIN CREATE MATERIALIZED VIEW.

Examples

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