last_snapshot_version Funkce

Vrací verzi nejnověji zavázaného snapshotu pro uzavřený AUTO CDC ... FROM SNAPSHOT tok. Závazný snímek může pocházet z předchozí aktualizace pipeline nebo z dřívější iterace aktuální aktualizace.

Tato funkce je dostupná pouze uvnitř klauzule WITH VERSION (...)AUTO CDC ... FROM SNAPSHOT toku.

Syntax

last_snapshot_version()

Arguments

Tato funkce nepřijímá žádné argumenty.

Returns

Jednosloupcová relace se stejným názvem sloupce a typem jako dotaz na verzi obklopujícího toku, obsahující 0 nebo 1 řádky:

  • 1 řádek obsahující nejnovější popsanou verzi snapshotu.
  • 0 řádků, pokud tok neprovedl snapshot od svého původního vytvoření nebo poslední plné obnovy.

Po úspěšném commitu každého snapshotu last_snapshot_version() je tato zadaná verze vystavena dalšímu vyhodnocení dotazu na verzi, včetně vyhodnocení v rámci stejné aktualizace pipeline. To umožňuje jedné aktualizaci vybrat a zpracovat více verzí v pořadí.

Examples

Následující postup slouží last_snapshot_version() k nalezení dalšího souboru ke zpracování po posledním, který commitoval:

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() je dostupný pouze uvnitř klauzule WITH VERSION (...)AUTO CDC ... FROM SNAPSHOT toku. Kdekoli jinde Spark vyřeší název jako obyčejnou tabulkovou funkci. Protože taková funkce není definována, zvyšuje (UNRESOLVABLE_TABLE_VALUED_FUNCTIONSQLSTATE 42883).