Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:FIRST_VALUE

Dernière mise à jour :Aug 09, 2026

Renvoie la première valeur non nulle d'un flux de données. Utilisez FIRST_VALUE comme fonction de fenêtrage dans une clause OVER, ou comme fonction d'agrégation avec GROUP BY.

Syntaxe

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

Arguments

Argument Type de données Description
value Tout type Colonne ou expression à évaluer. Renvoie NULL si toutes les valeurs d'entrée sont NULL. Tous les arguments doivent être du même type de données.
order BIGINT Clé numérique déterminant l'enregistrement considéré en premier. La fonction renvoie l'enregistrement non nul dont la valeur order est la plus petite.

Exemples

Les exemples suivants utilisent la table 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

Trouver le premier produit acheté par chaque utilisateur

Regroupe les lignes par user_id, trie chaque groupe par create_time et renvoie le product_id de la ligne la plus ancienne pour chaque utilisateur.

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;

Résultat :

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

Trouver le premier utilisateur ayant acheté chaque produit

Regroupe les lignes par product_id et utilise UNIX_TIMESTAMP(create_time) comme clé de tri pour renvoyer le user_id correspondant au premier achat de chaque produit.

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

Résultat :

product_id first_user
1 user_001
2 user_002
3 user_003
4 user_001
5 user_002