Présentation de la fonctionnalité
Grist a annoncé l’ajout de fonctions de fenêtre, une classe d’opérations habituellement réservée aux bases de données relationnelles, directement dans son éditeur de feuilles de calcul. L’annonce indique que l’on peut désormais calculer des totaux cumulés, des moyennes mobiles ou des classements sans recourir à des colonnes auxiliaires. Cette évolution vise à réduire le nombre de formules intermédiaires et à simplifier les modèles de données.
Mécanisme technique des fonctions de fenêtre
Les fonctions de fenêtre s’appuient sur un cadre d’évaluation qui parcourt les lignes d’une colonne en appliquant un « frame » défini par l’utilisateur (par exemple ROWS BETWEEN 2 PRECEDING AND CURRENT ROW). Chaque ligne reçoit le résultat d’une agrégation (SUM, AVG, COUNT, etc.) calculée sur le sous‑ensemble de lignes spécifié. Le moteur de Grist doit donc maintenir un état temporaire pour chaque ligne afin d’éviter de recalculer l’agrégation à chaque modification.
Pour implémenter ce comportement, Grist a intégré un interpréteur capable de traduire les formules de fenêtre en appels à son moteur de calcul interne. Le processus comprend trois étapes : parsing de la formule, génération d’un plan d’exécution qui décrit le déplacement du cadre, puis exécution incrémentale qui met à jour les cellules dépendantes dès qu’une valeur source change. Cette approche minimise le coût de recomputation par rapport à une réévaluation globale.
Implications pour les utilisateurs et limites
Du point de vue de l’utilisateur, la nouvelle capacité permet de remplacer des constructions complexes basées sur des colonnes auxiliaires par une seule formule de fenêtre. Par exemple, un total cumulé peut être exprimé par
=SUM(value) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) au lieu de créer une colonne « running_total » contenant une référence à la ligne précédente. Cette simplification réduit le risque d’erreurs de référence et améliore la lisibilité du tableau.La mise en œuvre introduit toutefois des contraintes. Le calcul de fenêtres dépend de l’ordre des lignes ; toute modification de l’ordre (tri, filtrage) déclenche une recomputation complète du cadre, ce qui peut impacter les performances sur de très grands jeux de données. De plus, les fonctions de fenêtre ne sont pas compatibles avec toutes les formules existantes : les opérations qui modifient la structure du tableau (insertion de lignes, changement de type de colonne) nécessitent une réinitialisation du cache interne. Enfin, l’article ne précise pas les limites de taille de cadre ni les performances mesurées, ce qui laisse une marge d’incertitude quant à l’impact sur les feuilles contenant plusieurs dizaines de milliers de lignes.