last_snapshot_version fonksiyon

En son bağlanmış anlık görüntünün versiyonunu kapatan AUTO CDC ... FROM SNAPSHOT akış için döndürür. Belirlenmiş anlık görüntü, önceki bir pipeline güncellemesinden veya mevcut güncellemenin önceki bir yinelemesinden gelebilir.

Bu fonksiyon yalnızca bir AUTO CDC ... FROM SNAPSHOT akışın WITH VERSION (...) cümlesi içinde kullanılabilir.

Syntax

last_snapshot_version()

Arguments

Bu işlev bağımsız değişken almaz.

Returns

Aynı sütun adı ve türüne sahip, 0 veya 1 satır içeren, aynı sütun adı ve türüne sahip tek sütunlu bir ilişki:

  • En son uygulanan anlık görüntü versiyonunu içeren 1 satır.
  • Akış ilk oluşturulduğundan veya en son tam yenilemeden beri anlık görüntü yapmamışsa 0 satır olur.

Her anlık görüntü başarılı bir şekilde commit edildikten sonra, last_snapshot_version() o taahhüt edilen versiyonu, aynı pipeline güncellemesindeki değerlendirmeler dahil olmak üzere bir sonraki sürüm sorgusunun değerlendirilmesine maruz bırakır. Bu, bir güncellemenin birden fazla sürümü sırayla seçip işlemesine olanak tanır.

Examples

Aşağıdaki akış, son commit edilen dosyadan sonra işlenecek bir sonraki dosyayı bulmak için kullanılır 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()yalnızca bir AUTO CDC ... FROM SNAPSHOT akışın WITH VERSION (...) cümlesi içinde bulunabilir. Başka herhangi bir yerde Spark, ismi sıradan bir tablo değerli fonksiyon olarak çözer. Böyle bir fonksiyon tanımlanmadığı için, (SQLSTATE 42883) yükseltiyor UNRESOLVABLE_TABLE_VALUED_FUNCTION .