Les exceptions d’agrégation sont un concept classique que nous rencontrons fréquemment sur nos projets. Bien qu’elles soient maîtrisées par beaucoup d’entre nous, je me permettrai un petit rappel avant d’expliquer comment les mettre en place dans deux outils SAP (SAP HANA Studio et Query Bex).
1. Différence entre une exception d’agrégation et une agrégation standard.
Une agrégation est par définition, une agrégation d’indicateurs, généralement une somme, un Max ou un Min. Quand on utilise une agrégation standard, cela signifie que nous agrégeons les indicateurs en les sommant par exemple. SAP associe automatiquement l’option SUM au champ d’agrégation car elle est généralement la plus utilisée. Cependant, une agrégation standard ne traite les lignes qu’individuellement sans prendre en compte les axes d’analyses.
Ci-dessus, les produits sont regroupés et sommés dans la dernière ligne « TOTAL ». Utilisant une agrégation standard, la règle dans la troisième colonne traite la ligne total individuellement.
L’exception d’agrégation agrège elle aussi des indicateurs mais en fonction d’une caractéristique de référence définie (souvent une caractéristique de temps, mais cela peut aussi être un type de produit ou un groupe de matériel par exemple). Elle effectue son traitement et affiche le résultat en gardant la caractéristique de référence en ligne de compte sans pour autant l’afficher.
Ci-dessus, on utilise le même exemple que pour l’agrégation simple mais en utilisant le produit comme caractéristique de référence afin de créer notre exception d’agrégation sur la colonne 3. On somme ensuite le résultat (ligne TOTAL) tout en gardant en mémoire la granularité de la caractéristique de référence.
2. Exception d’agrégation dans SAP HANA studio
Dans cette partie, nous utiliserons un jeu de données similaire auquel nous ajoutons des villes où se situent les magasins présentant ces produits.
Dans une vue HANA, dès lors que l’on va agréger notre set de données, l’utilisation de l’option « keep flag » nous permet d’effectuer notre exception agrégation.
Activer l’option keep flag sur un ou plusieurs attributs dans une agrégation, permet lors des calculs d’assurer la granularité sur ces derniers.
Pour cet exemple, nous créons une colonne calculée QTY_excpt_agreg, correspondant aux quantités supérieures à 10.
Ainsi, lorsque l’on effectue un data preview de la vue, nous pouvons étudier les différences de comportements entre les deux types d’agrégation.
Les résultats sans le keep flag montrent que le calcul de QTY_excpt_agreg va s’effectuer sur les quantités agrégées. Lyon, Nice et Paris possédant tous au total plus de 10 pour la colonne quantité, le résultat est donc 10. Si on active le Keep Flag, on peut voir que le calcul va se faire avec la granularité de l’attribut Produit. Lyon, par exemple, possède un total de 37 en quantité, mais seulement deux produits qui dépassent le seuil des 10.
3. Exception d’agrégation dans Query Bex
On peut aussi choisir d’effectuer les exceptions d’agrégation dans les Query Bex. Lorsque l’on créé une Calculated Keyfigure dans, par exemple, un composite provider, l’onglet Agrégation permet de lister les caractéristiques de références . A noter qu’il est impératif de rentrer un type d’exception d’agrégation pour pouvoir utiliser les caractéristiques de références.
Il suffit ensuite de rentrer la formule de calcul souhaité dans l’ongle Calculations.
Malheureusement, mal implémentées, les exceptions d’agrégations augmentent le temps d’exécution de votre requête. Ainsi nous montrerons par la suite dans quelles mesures et comment il est possible de réduire ces temps d’exécution.
4. Pushdown dans HANA
En poussant l’agrégation dans la base de données Hana, nous optimisons les temps d’exécution des requêtes contenant des exceptions d’agrégations. Cela est possible en RSRT via les propriétés de query « Operations in BWA/HANA » et en réglant l’option sur 6 ou directement dans les « Runtime Profile Properties » de votre requête. Une telle action sollicite le moteur d’HANA, plus puissant et promettant une vitesse d’exécution plus rapide que le moteur OLAP.
Cependant, certaines conditions sont requises pour effectuer un pushdown de ou des exceptions d’agrégations.
Nous devons ainsi connaître et respecter ces conditions afin d’utiliser cette option.
5. Cas dans lesquels l’exception d’agrégation ne pourra être « pushed down » dans HANA
Dans les trois cas suivants, le « push down » ne pourra pas être réalisé (au détriment des performances en temps d’exécution) :
– Le composite provider contient une ou plusieurs jointures ambiguës.
On appelle join ambiguës des jointures entre des tables dans lesquelles l’Analytic Engine doit s’assurer que les ratios ne sont pas dupliqués quand la jointure n’est pas unique. C’est un problème générique avec des cardinalités comme a:n, n:A ou n:m.
Le résultat attendu après jointure est 10 et non 20; ce qui peut être obtenu grâce à l’Analytic Engine.
– La ou les caractéristiques de référence possèdent des CMP problem (compounding problem).
Si on utilise un InfoObject couplé avec un autre InfoObject en tant que caractéristique de référence, il faut alors mapper ces deux InfoObject à l’ensemble des sources utilisées dans la requête. Dans le cas contraire, un CMP problem empêchera le pushdown.
(Pour davantage d’informations sur les CMP problem, je vous invite à lire ce wiki SAP)
– Le traitement des SID n’est pas assuré dans le champ cible.
Dans le composite provider, il est possible de cocher le flag « User Confirmed Referential Integrity » ce qui l’autorise à faire une jointure avec la table de base des SID.
Le pushdown de l’exception d’agrégation pourra se faire dans HANA une fois toutes ces conditions validées.
Nous pouvons vérifier l’absence de problème de pushdown dans rsrt via l’affichage des données statistique de notre requête (article à paraître prochainement).
Conclusion
Les exceptions d’agrégations sont des éléments simples à comprendre qui peuvent se montrer fort utile lorsqu’elles sont bien utilisées.
C’est pourquoi il est important de les comprendre théoriquement afin de pouvoir en profiter le moment venu.
Aymeric Alos
Derniers articles parAymeric Alos (voir tous)
- SAP Analytics Designer - 27 juillet 2022
- Exceptions d’agrégations : Utilisation, Keep flag, push down - 27 octobre 2020
- Comment améliorer les performances de son application sous Lumira Designer? - 27 mai 2019