Somme des lignes dans les tableaux croisés dynamiques
Pour le calcul des totaux dans les tableaux simples QlikView, il est possible de choisir une simple somme des enregistrements ou le résultat d'une expression calculée. Ce choix n'est pas possible avec un tableau croisé dynamique QlikView. Dans ce cas, les totaux sont toujours des expressions calculées.
Cela n'est pas gênant, dans la mesure où il est rare que la somme des enregistrements soit significative en cas de divergence.
Ceci posé, la section suivante présente un exemple où le total de la somme des enregistrements est malgré tout le résultat souhaité.
Cet exemple illustre un concours scolaire où des équipes de trois étudiants obtiennent des points en fonction des notes qu'ils ont obtenues dans trois catégories différentes. Chaque équipe peut sélectionner le meilleur score du groupe dans chaque catégorie puis ajouter ces trois scores pour obtenir le résultat. Les données suivantes ont été chargées par le script:
Un tableau simple contenant la dimension Class et l'expression Max(Score) génère la somme des enregistrements suivante :
Si le tableau simple a été converti en tableau croisé dynamique qui est toujours calculé comme un total de l'expression plutôt que comme une somme des enregistrements, un problème se pose :
Dans ce cas précis, 12 est le total attendu, et 5 est erroné. Dans le cas présent, il est possible d'utiliser la fonction Aggr dans l'expression, et pas dans la dimension.
On inclut l'expression de départ dans une fonction Aggr, en utilisant également la dimension du tableau comme dimension dans la fonction Aggr. On utilise à présent ce groupe comme argument d'une agrégation Sum. La table affiche à présent le total attendu :
L'intérêt de la fonction d'agrégation avancée est d'évaluer chaque ligne comme une seule valeur. Ceci est possible par le fait que la dimension ne peut prendre qu'une seule valeur possible pour chaque ligne de données. Puisque la dimension et l'expression sous-jacentes sont les mêmes pour le graphique, chaque valeur sera bien entendu identique, comme le résultat sans les fonctions Sum et d'agrégation avancée qui les englobent.
Cependant, pour toute la ligne, la fonction d'agrégation avancée renverra trois valeurs, une pour chaque valeur de champ dimension. Celles-ci seront alors additionnées par l'agrégation Sum. Tout en étant formellement le total de l'expression, le résultat sera égal à la somme des lignes.