Todos los productos
Search
Centro de documentos

Realtime Compute for Apache Flink:FIRST_VALUE

Última actualización: Sep 03, 2026

Devuelve el primer valor no nulo en un flujo de datos. Utilice FIRST_VALUE como función de ventana en una cláusula OVER, o como función de agregación con GROUP BY.

Sintaxis

FIRST_VALUE( T value )
FIRST_VALUE( T value, BIGINT order )

Argumentos

Argumento

Tipo de dato

Descripción

value

Cualquiera

La columna o expresión que se va a evaluar. Devuelve NULL si todos los valores de entrada son NULL. Todos los argumentos deben ser del mismo tipo de dato.

order

BIGINT

Una clave numérica que determina qué registro se considera primero. Se devuelve el registro no nulo con el valor de order más pequeño.

Ejemplos

A continuación se presentan ejemplos que utilizan la tabla T1:

user_id (VARCHAR)

product_id (BIGINT)

create_time (TIMESTAMP)

user_001

1

2023-02-15 10:40:56

user_002

2

2023-02-15 11:40:56

user_003

3

2023-02-15 12:40:56

user_001

4

2023-02-15 13:40:55

user_002

5

2023-02-15 14:40:56

user_001

1

2023-02-15 15:40:56

user_003

4

2023-02-15 16:40:56

Buscar el primer producto que compró cada usuario

Agrupa las filas por user_id, ordena cada grupo por create_time y devuelve el product_id de la fila más antigua por usuario.

SELECT `user_id`, create_time, product_id,
    FIRST_VALUE(product_id)
    OVER (PARTITION BY `user_id` ORDER BY create_time) AS first_product
FROM T1;

Resultado:

user_id (VARCHAR)

create_time (TIMESTAMP)

product_id (BIGINT)

first_product (BIGINT)

user_001

2023-02-15 10:40:56

1

1

user_001

2023-02-15 13:40:56

4

1

user_001

2023-02-15 15:40:56

1

1

user_002

2023-02-15 11:40:56

2

2

user_002

2023-02-15 14:40:56

5

2

user_003

2023-02-15 12:40:56

3

3

user_003

2023-02-15 16:40:56

4

3

Buscar el primer usuario que compró cada producto

Agrupa las filas por product_id y utiliza UNIX_TIMESTAMP(create_time) como clave de ordenamiento para devolver el user_id de la compra más antigua por producto.

SELECT product_id,
    FIRST_VALUE(`user_id`, UNIX_TIMESTAMP(create_time)) AS first_user
FROM T1
GROUP BY product_id;

Resultado:

product_id

first_user

1

user_001

2

user_002

3

user_003

4

user_001

5

user_002