Le Multi-Report dans MyReport
L’une des fonctionnalités les plus complexes de MyReport Builder est le mode « Multi-Report » que nous appellerons le mode Multi Rapports
Voyons en détail ce mode de fonctionnement, son utilité et ses cas d’usage.
Le principe
Le mode Multi-rapports, comme son nom l’indique, permet d’exécuter plusieurs jeux de données simultanément. On parle alors de sous-rapports, qui sont associés ou fusionnés pour aboutir à un rapport final. Ce principe s’apparente à celui des sous-requêtes en SQL.
Cette méthode est indispensable si vous souhaitez interroger différents modèles MyReport, car rappelons qu’un rapport MyReport (ou sous-rapport) ne peut interroger qu’un seul modèle à la fois
Prenons l’exemple suivant :
Imaginons que vous disposez de trois modèles de données :
-
Ventes (au ticket de caisse)
-
Objectifs (mensuels par magasin)
-
Photos de stock (produits par magasin à chaque fin de mois)
Un utilisateur vous demande un rapport par magasin, mois par mois, présentant les indicateurs de ventes, les objectifs et la valorisation du stock.
Vous êtes alors obligé d’utiliser le mode Multi-rapports avec trois sous-rapports pour calculer les indicateurs et les lier afin d’obtenir le résultat final :
-
1er sous-rapport : chiffre d’affaires mensuel par magasin
-
2e sous-rapport : objectif mensuel par magasin
-
3e sous-rapport : valorisation du stock par magasin à chaque fin de mois
Grâce à la fonctionnalité Multi-rapports, il est ainsi possible de comparer et d’associer facilement des données issues de sources différentes, même si elles n’ont pas la même structure ou granularité
Le mode Multi-rapports Croisé
Le croisement est la méthode la plus simple à conceptualiser.
Il correspond à une jointure entre deux requêtes (équivalent d’un JOIN en SQL) où les champs partageant une clé de jointure commune sont associés.
Mécanisme technique
1.Exécution parallèle :
Les requêtes SQL sont exécutées simultanément sur les bases de données sources.
2.Stockage temporaire :
Les résultats sont hébergés dans la mémoire du serveur MyReport pour traitement.
3.Jointure applicative :
Le serveur MyReport effectue lui-même les jointures entre les jeux de données, contrairement à une requête SQL classique où la base de données gère cette étape.
Contraintes et bonnes pratiques
-
Impact sur les performances :
Méthode gourmande en ressources serveur, surtout avec des volumes importants. Chaque clé doit être comparée à l’ensemble des autres jeux de données.
Exemple : 10 000 lignes dans chaque sous-requête → 100 millions de combinaisons potentielles. -
Découplage des index :
Les index de la base de données ne sont plus utilisés après l’exécution des sous-requêtes. L’optimisation doit se faire au niveau des requêtes elles-mêmes. -
Cas d’usage typique :
Indispensable pour répliquer des valeurs entre jeux de données à granularités différentes.
Exemple concret :-
Sous-requête 1 : Objectifs mensuels (1 valeur/magasin/mois)
-
Sous-requête 2 : Ventes journalières (30 valeurs/magasin/mois)
→ Le croisement permet d’associer systématiquement l’objectif mensuel à chaque vente quotidienne.
-
Analogie technique
Cette méthode reproduit une jointure interne (INNER JOIN) avec condition, équivalente à un produit cartésien filtré par des critères spécifiques.
Avantage clé
Permet de combiner des données provenant de modèles MyReport hétérogènes que le SGBD ne pourrait pas joindre nativement.
Le mode Multi-rapports Consolidé
Il s’agit d’une méthode rarement utilisée, souvent méconnue, mais qui se révèle bien plus polyvalente et puissante que le mode croisé.
Contrairement au croisement, qui repose sur des correspondances entre jeux de données (jointures), la consolidation consiste à empiler les données issues de différentes sous-requêtes.
Autrement dit, si la méthode croisée s’apparente à un JOIN en SQL, la consolidation correspond à un UNION ALL.
Principe et avantages
La consolidation est particulièrement efficace sur de gros volumes de données, car il n’y a aucune recherche de clé entre les sous-requêtes : il suffit simplement d’identifier les colonnes à empiler ensemble, un peu à la manière d’un jeu de Tetris où l’on superpose les pièces.
Cette approche permet :
-
d’agréger des données de sources ou de structures différentes,
-
de faciliter l’analyse transversale,
-
d’améliorer les performances sur de grands ensembles de données, puisque le serveur n’a pas à effectuer de jointures complexes.
Exemples d’usages
Vous trouverez ci-dessous deux exemples typiques d’utilisation de la consolidation :
1.Empilement simple de données similaires (Consolidation Classique)
Par exemple, consolider les ventes en magasin et les ventes en ligne dans un même tableau, même si les sources ou les structures diffèrent.
2.Indicateur comme axe d’analyse (Consolidation avec création d’indicateurs)
Ici, l’indicateur lui-même devient un axe d’analyse : on structure le tableau pour comparer, par exemple, le chiffre d’affaires, la marge et le volume, tous empilés dans une même colonne « Indicateur » avec une colonne « Valeur ». Cela permet une analyse plus flexible et dynamique.
En Résumé , le mode multi-rapports consolidé est donc à privilégier lorsque vous souhaitez fusionner des données hétérogènes sans correspondance directe, ou structurer vos analyses autour d’indicateurs communs, tout en bénéficiant de performances optimisées sur de grands volumes de données.
Nos recommandations
Premièrement, le mode Multi-rapports doit être utilisé en dernier recours et sous certaines conditions, car il entraîne des limitations fonctionnelles et une forte consommation de ressources.
En effet, la création d’un Multi-rapports nécessite des connaissances avancées du produit et n’est pas à la portée de tous. Un usage inapproprié peut entraîner de mauvaises associations de lignes et conduire à des interprétations erronées des résultats.
De plus, la mise en place d’un Multi-rapports rend inopérantes des fonctionnalités telles que le zoom et les fonctions maître/détail. Il est donc indispensable de l’utiliser uniquement lorsque vous devez croiser différents modèles.
À éviter absolument
Si votre objectif est de réaliser un comparatif A/A-1 (année en cours vs année précédente) via un Multi-rapports, il s’agit d’une facilité qui conduit souvent à des erreurs. Préférez une requête unique qui récupère les données A et A-1, puis effectuez les calculs nécessaires pour dissocier les indicateurs.
Bonnes pratiques
-
Le Multi-rapports doit être réservé au croisement de modèles différents, et idéalement, limitez vous à une seule sous-requête par modèle.
-
Comme évoqué précédemment, la consolidation est bien moins gourmande en ressources que le croisement : privilégiez donc les modèles consolidés, sauf si vous avez réellement besoin de réaliser des « produits cartésiens » entre sous-rapports.
En Résumé
Utilisez le Multi-rapports avec discernement, uniquement lorsqu’il n’existe pas d’alternative technique plus simple ou plus performante, et privilégiez la consolidation chaque fois que cela est possible.
Conclusion
Les Multi-rapports offrent la possibilité de croiser facilement des données issues de sources différentes, mais leur utilisation doit rester réservée aux utilisateurs expérimentés. N’utilisez cette fonctionnalité qu’en dernier recours, lorsque aucune autre solution n’est possible, car elle présente de nombreuses contraintes et une forte consommation de ressources.
Privilégiez les modèles consolidés si vous souhaitez éviter la multiplication des lignes lors des jointures.
On peut regretter l’absence d’une assistance graphique pour mieux visualiser les jointures ou les consolidations, ainsi que d’un suivi de la volumétrie des sous-rapports et du rapport final, ce qui faciliterait le contrôle de la cohérence des résultats.
Enfin, soyez vigilant quant au volume de cellules utilisées : chaque sous-rapport contribue au nombre total de cellules autorisées par le serveur, ce qui peut vous amener rapidement à atteindre la limite fixée.