Actualités : analyse de données, Business Intelligence, Data Science, Big Data
Forums, dernières contributions
 Joel Da Costa
Mardi 5 Août 2008

Version imprimable
[Ignorer]
Bonjour Benjamin,

C'est en fait assez simple, la sum que vous définissez au niveau de la définition de l'objet est la fonction d'agrégation qui sera utilisée au niveau de la base de données pour faire les calculs, tandis que celle qui est définie comme fonction de projection sera la fonction d'agrégation utilisée par BO lorsque celui-ci devra faire l'agrégation.

Mettons nous en situation simple, nous avons une table de fait avec comme indicateur le CA, et comme dimensions l'année et le produit.

J'ai défini mon objet en tant que sum(CA) et sa fonction de projection est la moyenne (c'est n'importe quoi mais c'est pour l'exemple).

Si dans la requête de mon rapport je mets comme objet Année et CA, la requête générée sera Select Année,Sum(CA). Donc c'est la fonction d'agrégation définie dans l'objet qui sera utilisée.

En revanche, si dans ma requete je récupère Année, Produit et CA et que dans mon rapport je n'affiche que l'Année et le CA dans ce cas là ce n'est plus la BD qui effectue l'agrégation, mais le moteur de Business Objects, et dans ce cas c'est la fonction de projection qui est utilisée, ici là moyenne, donc dans mon rapport j'aurai par année la moyenne du CA.

En général, on accorde les deux fonctions d'agrégations, mais cela peu servir d'avoir a mettre somme d'un coté et autre chose de l'autre.

J'espère avoir été assez clair. Ah et une dernière chose, d'ordre plus général, essaye de faire un maximum travailler la base de données, et donc de faire réaliser les agrégations par la BD plutôt que par le moteur de BO. Une BD bien taillée s'enfilera sans souci une agrégation sur plusieurs centaines de milliers de lignes, le moteur de BO lui sera sur les rotules bien avant.

Cordialement,
Joël
 Joel Da Costa
Mardi 5 Août 2008

Version imprimable
[Ignorer]
Bonjour Benjamin,

Je pense que tu as compris, lorsque dans ton rapport (ie ta mise en page) tu as exactement les mêmes objets que ce présents dans ta requête dans ce cas le moteur analytique de BO ne réalise pas d'agrégation, dans ce cas, la fonction de projection n'est pas utilisée. Si dans ton rapport tu utilises moins d'objets que ce présent dans ta requête, alors le moteur analytique utilisera ta fonction de projection et réalisera une agrégation.

BO ne préviens pas, c'est a toi de bien faire attention a ton niveau de calcul dans tes rapports. C'est une des difficultés que l'on peut avoir lorsque l'on commence a développer des rapports très complexes.

Quand je dis qu'il faut privilégier l'agrégation au niveau de la BD, c'est notamment par la mise en place de la fonction d'agrégation au niveau de la définition de l'objet, le fameux Sum(CA) oui. Et ne rigolez pas, j'ai déjà fait des dizaines d'interventions chez des clients qui se plaignaient de temps de réponse catastrophiques sur des rapports avec des gros volumes, avec des utilisateurs disant 'BO c'est de la m**** ça fait tous les calculs en local', en 30 minutes, en positionnant des fonctions de regroupements sur les indicateurs, on divisait les temps de réponse par 10, car les personnes ayant réalisé l'univers étaient souvent des gens ne connaissant pas suffisament le SQL.

Ensuite il n'y a pas que ça, éviter par exemple de prendre 5 dimensions dans la requête alors que l'on sait que l'on ne vas en utiliser que 2.

C'est plus le fait de garder à l'esprit que le SGBD sera toujours plus performant que le moteur analytique de BO pour ces problématiques, ce n'est pas des règles absolues (bien que mettre des fonction de regroupement BD dans la définition des indicateurs soit déjà le minimum).

Cordialement,
Joel
 benjamin
Mardi 12 Août 2008

Version imprimable
[Ignorer]
Merci pour ses informations si tu as des exemples concrets je dirai plus tot visuelle n'hésite pas à me les envoyer par mail
merci


Twitter
Rss
LinkedIn
Facebook
Apple Podcast
App Store
Google Play Store