LAG |
Dernier paramètre |
| BigQuery |
Syntaxe
|
LAG(value_expression[, offset [, default_expression]])
|
Paramètres
| Nom |
Description |
| value_expression |
Ce paramètre permet de spécifier la colonne ou l'expression dont vous souhaitez récupérer la valeur à partir d'une ligne précédente. |
| offset |
Ce paramètre facultatif permet de définir le nombre de lignes à regarder en arrière pour récupérer la valeur. Par défaut, si non spécifié, l'offset est de 1 (ce qui signifie la ligne immédiatement précédente). |
| default_expression |
Ce paramètre facultatif permet de spécifier une valeur à retourner si l'offset dépasse les limites de la partition (c'est-à-dire s'il n'y a pas de ligne précédente à l'offset donné). Si ce paramètre n'est pas fourni, NULL est retourné par défaut dans ce cas. |
Description
Cette fonction permet demander la valeur d'expression spécifié sur l'enregistrement précédent.
Remarques
- Accès aux lignes précédentes dans une partition : La fonction LAG permet d'accéder à la valeur d'une ligne précédente dans un ensemble de résultats
ordonné. C'est un outil essentiel pour effectuer des comparaisons temporelles ou des calculs de différences entre des lignes consécutives, comme des écarts de ventes
d'un mois à l'autre.
- Offset paramétrable pour plus de flexibilité : Le paramètre offset permet de définir combien de lignes en arrière on souhaite regarder. Par
défaut, il vaut 1, mais il peut être augmenté pour comparer avec des valeurs encore plus anciennes, ce qui est utile dans des analyses glissantes sur plusieurs périodes.
- Valeur de remplacement en cas de débordement : Le paramètre default_expression sert à éviter les résultats NULL lorsque l'offset dépasse le début
de la partition. Par exemple, on peut afficher 0 ou "aucune valeur" au lieu de NULL dans une première ligne sans antécédent, ce qui améliore la lisibilité et la
robustesse des analyses.
- Utilisation dans les fonctions analytiques : LAG fait partie des fonctions analytiques (aussi appelées window functions). Elle doit être
utilisée avec une clause OVER() incluant un ORDER BY, et souvent un PARTITION BY, ce qui permet d'appliquer l'analyse ligne par ligne, tout en respectant un
regroupement logique (exemple : par utilisateur).
- Indispensable pour les calculs différentiels : Grâce à LAG, il est facile de calculer des différences entre lignes, comme des variations de valeurs,
des changements d'état ou des écarts temporels. Par exemple, une colonne "différence" peut être calculée avec montant - LAG(montant) OVER (...).
- Comportement NULL par défaut à connaître : Si aucun default_expression n'est fourni et que l'offset dépasse les bornes (exemple : sur
la première ligne), LAG retourne automatiquement NULL. Cela peut entraîner des erreurs si la valeur est utilisée sans vérification dans une opération arithmétique.
Il est donc conseillé d'utiliser IFNULL ou une valeur par défaut.
- Complémentarité avec la fonction LEAD : LAG permet de regarder vers le passé, alors que LEAD permet de regarder vers le futur. Utilisées ensemble, ces
fonctions offrent une vision avant/après d'un événement, pratique pour détecter des transitions, des tendances, ou des changements de comportement dans les données.
- Performances et lisibilité dans les requêtes : Bien que puissante, la fonction LAG peut alourdir une requête si elle est utilisée sans discernement
dans de grandes partitions. Il est donc important d'optimiser les clauses PARTITION BY et ORDER BY pour limiter le volume analysé, tout en maintenant une logique
claire dans le traitement des données.
Dernière mise à jour : Jeudi, le 18 Juin 2020