funktion last_snapshot_version

Returnerar versionen av den senast committerade snapshoten för det omslutande AUTO CDC ... FROM SNAPSHOT flödet. Den committed snapshot kan komma från en tidigare pipelineuppdatering eller från en tidigare iteration av den aktuella uppdateringen.

Denna funktion är endast tillgänglig inuti WITH VERSION (...) satsen i ett AUTO CDC ... FROM SNAPSHOT flöde.

Syntax

last_snapshot_version()

Arguments

Den här funktionen tar inga argument.

Returns

En enkolumnsrelation med samma kolumnnamn och typ som den bifogade flödets versionsfråga, innehållande 0 eller 1 rader:

  • 1 rad som innehåller den senast committerade snapshot-versionen.
  • 0 rader om flödet inte har gjort en snapshot sedan dess ursprungliga skapande eller senaste fullständiga uppdatering.

Efter att varje snapshot har kommitterats framgångsrikt, last_snapshot_version() exponerar den committerade versionen för nästa utvärdering av versionsfrågan, inklusive utvärderingar inom samma pipelineuppdatering. Detta gör att en uppdatering kan välja och bearbeta flera versioner i ordning.

Examples

Följande flöde används last_snapshot_version() för att hitta nästa fil att bearbeta efter den senaste som committade:

CREATE FLOW orders_cdc
  AS AUTO CDC INTO orders
  FROM SNAPSHOT (...)
  WITH VERSION (
    SELECT struct(modification_time, path) AS version
    FROM list_files('/Volumes/catalog/schema/landing/orders/')
    WHERE (
      NOT EXISTS (SELECT 1 FROM last_snapshot_version())
      OR struct(modification_time, path) > (SELECT version FROM last_snapshot_version())
    )
    ORDER BY modification_time, path
    LIMIT 1
  )
  KEYS (order_id);

Errors

last_snapshot_version() är endast tillgänglig inom WITH VERSION (...) satsen i ett AUTO CDC ... FROM SNAPSHOT flöde. Var som helst annars löser Spark namnet som en vanlig tabellvärd funktion. Eftersom ingen sådan funktion är definierad, höjer UNRESOLVABLE_TABLE_VALUED_FUNCTION den (SQLSTATE 42883).