LAST_VALUE retorna o último valor não nulo em um fluxo de dados dentro de uma janela OVER. Use esta função para rastrear o valor válido mais recente de cada partição à medida que novos registros chegam.
Limites
Compatível apenas com o Realtime Compute for Apache Flink que usa Ververica Runtime (VVR) 3.0.0 ou posterior.
Sintaxe
T LAST_VALUE(T value)
T LAST_VALUE(T value, BIGINT order)
Parâmetros de entrada
|
Parâmetro |
Tipo de dados |
Descrição |
|
|
Qualquer tipo de dados |
Valor a avaliar. A função ignora valores nulos. |
|
|
BIGINT |
Chave de classificação que define qual registro é considerado o último. A função retorna o registro não nulo com o maior valor de |
Todos os parâmetros de entrada devem ter o mesmo tipo de dados.
Valor retornado
Retorna o mesmo tipo de dados de value.
Notas de uso
**Uso do parâmetro order**
Ao fornecer um valor para order, LAST_VALUE selecione o registro não nulo com o maior valor de order em vez de depender da ordem de processamento.
Exemplo
Dados de teste (tabela T1)
|
a (BIGINT) |
b (INT) |
c (VARCHAR) |
|
1 |
1 |
Hello |
|
2 |
2 |
Hello |
|
3 |
3 |
Hello |
|
4 |
4 |
Hello |
|
5 |
5 |
Hello |
|
6 |
6 |
Hello |
|
7 |
7 |
NULL |
|
8 |
7 |
Hello World |
|
9 |
8 |
Hello World |
|
10 |
20 |
Hello World |
Instrução de teste
SELECT c, LAST_VALUE(b)
OVER (PARTITION BY c ORDER BY PROCTIME() RANGE UNBOUNDED PRECEDING) AS var1
FROM T1;
Resultado
|
c (VARCHAR) |
var1 (INT) |
|
Hello |
1 |
|
Hello |
2 |
|
Hello |
3 |
|
Hello |
4 |
|
Hello |
5 |
|
Hello |
6 |
|
NULL |
7 |
|
Hello World |
7 |
|
Hello World |
8 |
|
Hello World |
20 |
A linha com NULL na coluna c retorna var1 = 7 porque essa partição contém apenas uma linha (b = 7). Na partição Hello World, cada linha reflete o último valor não nulo de b até aquela posição inclusive (7, depois 8 e então 20), pois o quadro da janela é RANGE UNBOUNDED PRECEDING.