LAST_VALUE renvoie la dernière valeur non nulle d'un flux de données au sein d'une fenêtre OVER. Utilisez cette fonction pour suivre la dernière valeur valide de chaque partition à mesure que de nouveaux enregistrements arrivent.
Limites
Cette fonction est prise en charge uniquement dans Realtime Compute for Apache Flink utilisant Ververica Runtime (VVR) 3.0.0 ou une version ultérieure.
Syntaxe
T LAST_VALUE(T value)
T LAST_VALUE(T value, BIGINT order)
Paramètres d'entrée
| Paramètre | Type de données | Description |
|---|---|---|
value |
Tout type de données | La valeur à évaluer. Les valeurs nulles sont ignorées. |
order |
BIGINT | Clé de classement déterminant l'enregistrement considéré comme dernier. La fonction renvoie l'enregistrement non nul présentant la plus grande valeur order. |
Tous les paramètres d'entrée doivent être du même type de données.
Valeur de retour
Renvoie le même type de données que value.
Notes d'utilisation
**Utilisation du paramètre order**
Si vous fournissez une valeur order, LAST_VALUE sélectionne l'enregistrement non nul dont la valeur order est la plus élevée, au lieu de se fier à l'ordre de traitement.
Exemple
Données de test (table 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 |
Instruction de test
SELECT c, LAST_VALUE(b)
OVER (PARTITION BY c ORDER BY PROCTIME() RANGE UNBOUNDED PRECEDING) AS var1
FROM T1;
Résultat
| 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 ligne NULL dans c renvoie var1 = 7 car cette partition ne contient qu'une seule ligne (b = 7). Pour la partition Hello World, chaque ligne reflète la dernière valeur non nulle de b jusqu'à cette ligne incluse (7, puis 8, puis 20), car le cadre de la fenêtre est défini sur RANGE UNBOUNDED PRECEDING.