LAST_VALUE devuelve el último valor no nulo en un flujo de datos dentro de una ventana OVER. Utilice esta función para rastrear el valor válido más reciente de cada partición a medida que llegan nuevos registros.
Límites
Solo es compatible con Realtime Compute for Apache Flink que usa Ververica Runtime (VVR) 3.0.0 o versiones posteriores.
Sintaxis
T LAST_VALUE(T value)
T LAST_VALUE(T value, BIGINT order)
Parámetros de entrada
|
Parámetro |
Tipo de dato |
Descripción |
|
|
Cualquier tipo de dato |
Valor por evaluar. Se omiten los valores nulos. |
|
|
BIGINT |
Clave de ordenamiento que determina qué registro se considera el último. Se devuelve el registro no nulo con el mayor valor de |
Todos los parámetros de entrada deben ser del mismo tipo de dato.
Valor devuelto
Devuelve el mismo tipo de dato que value.
Notas de uso
**Uso del parámetro order**
Si proporciona un valor de order, LAST_VALUE selecciona el registro no nulo con el mayor valor de order en lugar de depender del orden de procesamiento.
Ejemplo
Datos de prueba (tabla 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 |
Instrucción de prueba
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 |
La fila NULL en c devuelve var1 = 7 porque dicha partición contiene solo una fila (b = 7). En la partición Hello World, cada fila refleja el último valor no nulo de b hasta esa fila inclusive (7, luego 8 y finalmente 20), ya que el marco de la ventana es RANGE UNBOUNDED PRECEDING.