last_snapshot_version 함수

포괄 AUTO CDC ... FROM SNAPSHOT 플로우에 대해 가장 최근에 커밋된 스냅샷 버전을 반환합니다. 커밋된 스냅샷은 이전 파이프라인 업데이트에서 올 수도 있고, 현재 업데이트의 이전 반복에서 올 수도 있습니다.

이 함수는 플로우의 AUTO CDC ... FROM SNAPSHOT 절 안 WITH VERSION (...) 에서만 사용할 수 있습니다.

문법

last_snapshot_version()

인수

이 함수는 인수를 사용하지 않습니다.

Returns

포함된 플로우의 버전 쿼리와 동일한 열 이름과 타입을 가진 단일 열 관계, 즉 0 또는 1 행을 포함하는 경우:

  • 가장 최근에 커밋된 스냅샷 버전을 포함하는 1행.
  • 플로우가 최초 생성 또는 가장 최근의 완전 갱신 이후 스냅샷을 커밋하지 않았다면 0행입니다.

각 스냅샷이 성공적으로 커밋되면, last_snapshot_version() 해당 커밋된 버전을 다음 버전 쿼리 평가에 노출하며, 동일한 파이프라인 업데이트 내 평가도 포함됩니다. 이를 통해 한 업데이트가 여러 버전을 순서대로 선택하고 처리할 수 있습니다.

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()는 흐름의 AUTO CDC ... FROM SNAPSHOT 절 안 WITH VERSION (...) 에서만 제공됩니다. 다른 곳에서는 Spark가 이름을 일반적인 테이블 값 함수로 해석합니다. 그러한 함수가 정의되지 않기 때문에 (SQLSTATE 42883)를 생성합니다.UNRESOLVABLE_TABLE_VALUED_FUNCTION