last_snapshot_version 関数

囲み込む AUTO CDC ... FROM SNAPSHOT フローに対して、最も直近にコミットされたスナップショットのバージョンを返します。 コミットされたスナップショットは、前のパイプライン更新から取得することも、現在の更新の以前の反復から得られます。

この機能はAUTO CDC ... FROM SNAPSHOTフローのWITH VERSION (...)節内でのみ利用可能です。

Syntax

last_snapshot_version()

引数

この関数は引数を受け取りません。

返品

囲むフローのバージョンクエリと同じ列名と型を持つ単一列関係で、行数が0または1:

  • 1行には、直近にコミットされたスナップショットバージョンが入っています。
  • フローが初期作成以降または直近のフルリフレッシュ以降、スナップショットをコミットしていない場合は0行となります。

各スナップショットが成功裏にコミットされた後、 last_snapshot_version() はそのコミットされたバージョンを次のバージョンクエリの評価に公開し、同じパイプライン更新内の評価も含みます。 これにより、1つのアップデートで複数のバージョンを順番に選択・処理できます。

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は通常のテーブル値関数として名前を解決します。 そのような関数が定義されていないため、 UNRESOLVABLE_TABLE_VALUED_FUNCTION (SQLSTATE 42883)を上げます。