last_snapshot_version функция

Возвращает версию последнего зафиксированного снимка для окружающего AUTO CDC ... FROM SNAPSHOT потока. Скомментированный снимок может быть получен из предыдущего обновления конвейера или из более ранней версии текущего обновления.

Эта функция доступна только внутри WITH VERSION (...) клаузы потока AUTO CDC ... FROM SNAPSHOT .

Syntax

last_snapshot_version()

Аргументы

Эта функция не принимает аргументы.

Returns

Одностолбцевое отношение с тем же названием и типом столбца, что и запрос версии окружающего потока, содержащее 0 или 1 строку:

  • 1 строка, содержащая последнюю зафиксированную версию снимка.
  • 0 строк, если поток не фиксировал снимок с момента создания или последнего полного обновления.

После успешного last_snapshot_version() фиксации каждого snapshot открывает эту фиксированную версию для следующей оценки запроса версии, включая оценки внутри того же обновления конвейера. Это позволяет одному обновлению выбирать и обрабатывать несколько версий по порядку.

Examples

Следующий поток используется last_snapshot_version() для поиска следующего файла для обработки после последнего, который совершил коммит:

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() доступна только внутри WITH VERSION (...) клаузы потока AUTO CDC ... FROM SNAPSHOT . В любом другом месте Spark разрешает название как обычную табличную функцию. Поскольку такой функции не определено, оно повышает UNRESOLVABLE_TABLE_VALUED_FUNCTION (SQLSTATE 42883).