Bonjour,
Supposons que vous ayez ces données :
1 2 3 4 5 6 7 8 9 10
| Data:
LOAD * INLINE [
Commercial, Periode, Valeur
Bob, 1, 1
Bob, 2, 2
Bob, 3, 3
Mike, 1, 10
Mike, 2, 20
Mike, 3, 30
]; |
Si votre tableau contient en dimension uniquement les commerciaux, et que vous souhaitez que l'utilisateur filtre sur une période, vous pouvez utiliser l'expression
Sum({$ <Periode={'$(=only(Periode) - 1)'}>} Valeur)
pour connaitre la valeur de la période précédente.
En revanche, si vous utilisez la dimension "Periode" dans votre graph, il ne sera pas possible de jouer avec dans les Set Analysis : en effet, le Set Analysis est appliqué à l'expression avant que le calcul soit fait ligne par ligne.
Pour obtenir ce que vous souhaitez, vous avez 2 solutions :
- Utiliser la fonction "above()", qui permet de calculer une expression selon la valeur de dimension précédente. Cela ne fonctionnera que si "Periode" est la dernière dimension.
- Utiliser une dimension décorrélée du modèle :
1 2 3 4 5
| DimPeriode:
LOAD
DISTINCT Periode AS DimPeriode
RESIDENT Data
ORDER BY Periode ASC; |
Dans le graph, au lieu d'utiliser "Periode" comme dimension, on utilise "DimPeriode".
Pour avoir la valeur correspondante à la période, on met l'expression
sum(if(Periode = DimPeriode, Valeur))
et pour avoir la valeur correspondante à la période précédente, on met l'expression
sum(if(Periode + 1 = DimPeriode, Valeur))
.
Avec cette méthode, on peut mettre les dimensions dans l'ordre qu'on veut dans le graph. L'inconvénient est que le graph sera un peu plus long à calculer, car QV sera obligé de tester une égalité pour chaque ligne du graph.
Partager