last_snapshot_version Função

Devolve a versão do snapshot mais recentemente confirmado para o fluxo anexo 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.

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

Sintaxe

last_snapshot_version()

Arguments

Esta função não aceita 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 de snapshot mais recentemente confirmada.
  • 0 linhas se o fluxo não tiver confirmado um snapshot desde a sua criação inicial ou a atualização completa mais recente.

Após cada snapshot ser confirmado com sucesso, last_snapshot_version() essa versão comprometida é expuesta à avaliação seguinte da consulta de versão, incluindo avaliações dentro da mesma atualização do pipeline. Isto permite que uma atualização selecione e processe várias versões por ordem.

Examples

O fluxo seguinte é usado last_snapshot_version() para encontrar o próximo ficheiro a processar 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);

Errors

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 ordinária de valores de tabela. Como tal função não está definida, ela aumenta UNRESOLVABLE_TABLE_VALUED_FUNCTION (SQLSTATE 42883).