← Toutes les astuces

Peek() ou Previous() ? Deux fonctions qui ne regardent pas au même endroit

Previous() lit l’enregistrement d’entrée précédent ; Peek() lit une valeur déjà présente dans une table Qlik.

Image mentale

Previous() regarde en arrière dans le flux qui entre dans le LOAD. Peek() regarde dans une table Qlik déjà construite. Avec un WHERE ou un ORDER BY, ces deux « lignes précédentes » peuvent donc ne plus être les mêmes.

Le problème

La nuance devient importante dès qu’un WHERE, une transformation ou un tri intervient dans le chargement.

À surveiller
// Les deux fonctions ne sont pas interchangeables.
LOAD
    Date,
    Montant,
    Previous(Montant) AS Montant_Precedent
RESIDENT Ventes;
Écriture conseillée
VentesTriees:
LOAD
    Date,
    Montant,
    Montant - Peek('Montant') AS Ecart
RESIDENT Ventes
ORDER BY Date;