last_snapshot_version Função

Retorna a versão do snapshot mais recentemente confirmado para o fluxo que envolve AUTO CDC ... FROM SNAPSHOT . O snapshot comprometido pode vir de uma atualização anterior do pipeline ou de uma iteração anterior da atualização atual.

Essa função está disponível apenas dentro da WITH VERSION (...) cláusula de um AUTO CDC ... FROM SNAPSHOT fluxo.

Sintaxe

last_snapshot_version()

Argumentos

Essa função não utiliza argumentos.

Returns

Uma relação de coluna única com o mesmo nome e tipo de coluna da consulta de versão do fluxo anexo, contendo 0 ou 1 linhas:

  • 1 linha contendo a versão do snapshot mais recentemente confirmada.
  • 0 linhas se o fluxo não tiver confirmado um snapshot desde sua criação inicial ou a última atualização completa.

Após cada snapshot ser confirmado com sucesso, last_snapshot_version() essa versão comprometida é exposta à próxima avaliação da consulta de versão, incluindo avaliações dentro da mesma atualização do pipeline. Isso permite que uma única atualização selecione e processe múltiplas versões em ordem.

Examples

O fluxo a seguir é usado last_snapshot_version() para encontrar o próximo arquivo a ser processado após o último que foi confirmado:

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);

Erros

last_snapshot_version() está disponível apenas dentro da WITH VERSION (...) cláusula de um AUTO CDC ... FROM SNAPSHOT fluxo. Em qualquer outro lugar, o Spark resolve o nome como uma função comum de valor de tabela. Como tal função não está definida, ela aumenta UNRESOLVABLE_TABLE_VALUED_FUNCTION (SQLSTATE 42883).