last_snapshot_version functie

Geeft de versie terug van de meest recent gecommitteerde snapshot voor de omsluitende AUTO CDC ... FROM SNAPSHOT flow. De gecommitteerde snapshot kan afkomstig zijn van een eerdere pipeline-update of van een eerdere iteratie van de huidige update.

Deze functie is alleen beschikbaar binnen de WITH VERSION (...) clausule van een AUTO CDC ... FROM SNAPSHOT flow.

Syntax

last_snapshot_version()

Arguments

Deze functie heeft geen argumenten.

Returns

Een enkelkolomrelatie met dezelfde kolomnaam en type als de versiequery van de omsluitende flow, met 0 of 1 rijen:

  • 1 rij met de meest recent gecommitteerde snapshotversie.
  • 0 rijen als de flow geen snapshot heeft gecommitteerd sinds de eerste aanmaak of de meest recente volledige verversing.

Na elke succesvolle last_snapshot_version() comm van elke snapshot wordt die gecommitteerde versie blootgesteld aan de volgende evaluatie van de versiequery, inclusief evaluaties binnen dezelfde pipeline-update. Dit maakt het mogelijk dat één update meerdere versies in volgorde selecteert en verwerkt.

Examples

De volgende flow gebruikt last_snapshot_version() om het volgende bestand te vinden dat verwerkt moet worden na het laatste dat committed:

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);

Fouten

last_snapshot_version() is alleen beschikbaar binnen de WITH VERSION (...) clausule van een AUTO CDC ... FROM SNAPSHOT flow. Overal elders lost Spark de naam op als een gewone tabelwaardige functie. Omdat zo'n functie niet gedefinieerd is, genereert UNRESOLVABLE_TABLE_VALUED_FUNCTION deze (SQLSTATE 42883).