FIRST_VALUE |
Première valeur |
| BigQuery |
Syntaxe
|
FIRST_VALUE(value_expression [{RESPECT | IGNORE} NULLS])
|
Paramètres
| Nom |
Description |
| value_expression |
Ce paramètre permet de spécifier l'expression pour laquelle vous souhaitez obtenir la première valeur. Il s'agit généralement d'une colonne ou d'un calcul basé sur une colonne. |
| RESPECT NULLS |
Ce paramètre (qui est le comportement par défaut si vous ne spécifiez rien) signifie que la fonction FIRST_VALUE prendra en compte les valeurs NULL comme n'importe quelle autre valeur. Si la première valeur rencontrée dans l'ensemble de données est NULL, c'est NULL qui sera renvoyé. Ce paramètre permet donc de renvoyer la toute première valeur, quelle que soit sa nature. |
| IGNORE NULLS |
Ce paramètre indique à la fonction FIRST_VALUE d'ignorer toutes les valeurs NULL qu'elle rencontre. Elle continuera à parcourir l'ensemble des valeurs jusqu'à ce qu'elle trouve la première valeur qui n'est pas NULL, et c'est cette valeur non-NULL qui sera renvoyée. Ce paramètre permet donc de renvoyer la première valeur non-NULL. |
Description
Cette fonction permet de demander le premier enregistrement d'un ensemble de valeurs.
Remarques
- Permet d'extraire la première valeur d'une fenêtre : La fonction FIRST_VALUE() est une fonction analytique retournant la première valeur d'un ensemble ordonné
défini par une clause OVER(...). Elle est très utile pour récupérer la première entrée d'un groupe ou d'un classement, par exemple la première commande d'un client.
- Fonctionne dans un contexte de fenêtre (window function) : FIRST_VALUE() doit être utilisée avec une clause OVER() définissant une partition et un ordre. Sans
ces éléments, la fonction renverra une erreur ou un comportement inattendu. C'est donc une fonction liée à l'analyse de séries ou de groupes de lignes.
- L'ordre de tri est essentiel au résultat retourné : L'ordre défini dans OVER(ORDER BY ...) détermine quelle valeur sera considérée comme "la première".
Changer l'ordre modifie donc directement le résultat de FIRST_VALUE(), ce qui en fait une fonction sensible à la structuration des données.
- Peut inclure ou ignorer les valeurs NULL : Grâce aux options RESPECT NULLS (comportement par défaut) et IGNORE NULLS, la fonction offre un contrôle précis
sur le traitement des valeurs nulles. Cela permet d'éviter que des valeurs NULL soient renvoyées si on souhaite uniquement des données significatives.
- Souvent utilisée avec PARTITION BY pour des regroupements : Dans les requêtes analytiques, FIRST_VALUE() est fréquemment utilisée avec PARTITION BY pour
extraire la première valeur de chaque sous-groupe. Par exemple, pour obtenir la première date d'achat de chaque client ou la première évaluation d'un produit.
- Utile pour calculer des écarts ou des comparaisons : Une combinaison fréquente est d'utiliser FIRST_VALUE() dans une fenêtre pour comparer chaque ligne
avec la première, calculer des deltas (par exemple d'évolution de prix, de performance, etc.) ou pour identifier des anomalies.
- Moins coûteuse que des sous-requêtes imbriquées : Utiliser FIRST_VALUE() dans une requête analytique permet d'éviter des jointures ou des sous-requêtes
complexes pour récupérer la première valeur d'un groupe, ce qui améliore les performances et simplifie le code SQL.
- Ne doit pas être confondue avec MIN() : Il ne faut pas confondre FIRST_VALUE() avec MIN(). MIN() donne la valeur minimale selon un critère, alors que
FIRST_VALUE() donne la première valeur en fonction d'un tri, ce qui peut être très différent dans une base temporelle ou textuelle.
Dernière mise à jour : Jeudi, le 18 Juin 2020