[Qlik] Remplir les cellules vides avec la précédente valeur
Parfois dans les données, certaines cellules ne sont pas remplies et on part du principe que leur valeur est la dernière connue.
Imaginons que nous ayons les données suivantes :
On constate que les cellules de la colonne « Date » ne sont pas forcément remplies.
Si les données sont chargées depuis un fichier, il est possible d’utiliser la fonction filters
:
data:
LOAD @1,
@2,
@3,
@4
FROM
[mon_fichiery.xlsx]
(ooxml, no labels, table is Feuil1, filters(
Replace(4, top, StrCnd(null))
));
Dans le cas où les données sont déjà chargées dans une table résidente, il n’est pas possible d’appliquer cette fonction.
Pour nous en sortir, nous allons utiliser la fonction peek
qui permet de récupérer la dernière valeur chargée.
Supposons que nous ayons une table avec les données suivantes (pas forcément bien triées) :
data:
LOAD * INLINE [
ID, Col1, Col2, Date
6, A, C
8, A, C
3, A, A
1, A, A, AA
10, B, A
4, A, B, AB
5, A, C, AC
7, A, C
9, B, A, BA
11, B, B, BB
12, B, C, BC
2, A, A
];
Pour remplir les cellules vides par « la dernière valeur connue quand les données sont chargées dans l’ordre », on fait :
new:
NoConcatenate
LOAD *,
if(len(trim(Date)) = 0, peek(Date_filled), Date) AS Date_filled
Resident data
ORDER BY ID ASC
;
DROP TABLE data;
Notes :
– len(trim(Date))
permet d’identifier les valeurs nulles comme les valeurs vides.
– peek(champ)
retourne la dernière valeur chargée pour ce champ.
– Il est impératif de trier les données par ordre croissant.