BI experience

29 mai 2010
par maryam khiali
0 Commentaires

Munci : Association professionnelle des informaticiens

Gérer sa carrière, choisir sa SSII, partager des idées sur le devenir des politiques adoptées par les sociétés (offshore, onshore…), bénéficier d’ateliers pour rester à jour…Toutes les clefs dont a besoin un ingénieur, pour mieux naviguer dans ce petit monde qu’est l’informatique, cette association nommée Munci les propose.

munci

Ce site vous donnera accès à un forum où des témoignages seront apportés sur la vie des informaticiens à l’intérieur des sociétés ou sur des expériences atypiques, des articles sur l’actualité, des ateliers, des conseils juridiques…

Je pense que ce site pourrait en aider plus d’un lorsqu’il voudra changer d’emploi en ayant une meilleure visibilité sur les SSII, pareil en cas de problèmes dans une société.

Si vous connaissez d’autres organismes de ce genre susceptibles d’aider les ingénieurs en informatique, n’hésitez pas à poster!

18 mai 2010
par maryam khiali
3 Commentaires

Jaspersoft : rendre les rapports un peu plus dynamiques avec les hyperlinks

Les rapports construits avec iReport et publiés sur Jasperserver sont des rapports assez statiques. Pour que l’utilisateur aie une impression de dynamisme, l’option « liens hypertextes ou hyperlinks » peut être intéressante.

Dans ce post nous allons voir quelques exemples d’utilisation d’hyperlink.

  • Pour créer un rapport hyperlink qui va exécuter un autre rapport

L’exemple qui suit est basé sur la base de données : sugarcrm

1) Créer un  sous premier rapport (qui sera ensuite appelé dans un rapport main) qui contient un PiChart par exemple avec la requête suivante en dataset :

/*************************************/

SELECT
sales_state,
SUM(amount) as amount
FROM
sales_fact
INNER JOIN sales_person ON sales_person.id = sales_fact.sales_person_id
INNER JOIN sales_state ON sales_state.id = sales_fact.sales_state_id
WHERE
sales_state.id > 1 AND sales_state.id < 8
GROUP BY
sales_state

/*********************************/

2) Faire un Clic droit sur le graphique >Chart Data > Détails > Section Hyperlink.

  • Dans hyperlink target choisir :  Self = dans la même page ou  blank = dans une nouvelle page
  • dans hyperlink type mettre « Report Exectution »
  • Puis dans l’onglet link parameters mettre : _report et l’emplacement de son report « /reports/myExamples/hyperlink2″
  • Et enfin ajouter un second paramètre sales_state ou l’on précisera $F{sales_state}

piechart_hyperlink1

3) Ensuite il faudra créer un second report avec un « input control » juste lisible pour que le passage de paramètre puisse se faire correctement dans la requête

input_control

huperlink_rapports

Et c’est ainsi que lorsque l’utilisateur va cliquer sur une partie du camembert, le paramètre sera envoyé au second rapport « hyperlink2″ qui sera ensuite exécuté et ouvert.

  • Pour créer un hyperlink dans un même rapport d’un texfield vers un autre textfield par exemple (qui sera dans le même rapport ou dans un sous rapport)

1)Créer le texfield qui sera le lien faire clic droit dessus et mettre dans l’onglet anchor >hyperlink anchor expression un identifiant unique dans le rapport exemple « coucou test »

hyperlink_simple1

2) Puis créer le textfield cible avec clic droit anchor name expression « coucou test » et le tour est joué !

hyerlink_simple2

  • Faire un lien qui pointe sur un document présent sur la plateforme

Comme vous pouvez le voir ci-dessous nous avons exécuté le rapport (en passant par le scheduler) pour créer une instance de ce rapport en PDF.

arbo_rapportsPuis je vais faire pointer un textfield sur ce document en faisant :

hyperlink3

Ll’hyperlink expression est l’adresse indiquée  lors de l’exécution d’hyperlink.pdf

  • Hyperlink vers une page Internet

page_internet

J’espère que ce post vous aura donné une petite vision de ce qu’il est possible de faire avec les hyperlinks proposés dans iReport.

Si vous avez d’autres astuces n’hésitez pas à poster!

1 mai 2010
par maryam khiali
0 Commentaires

Optimisation du serveur de base de données PostgreSQL

Pour de bonnes performances au niveau de la restitution, il faut à la fois optimiser les rapports, cube, univers.. créés grâce au logiciel de restitution et la base de données où est stocké le datawarehouse. Celle-ci doit passer par une phase d’optimisation, de configuration.

Je vous propose dans ce post de détailler la configuration de postgreSQL qu’un DBA est venu faire chez nous.

Tout d’abord notre environnement de production où la BDD a un serveur dédié était :

  • VM Debian
  • 2 Go RAM
  • 2 processeurs Intel(R) Xeon(R) 1,6 Ghz

kernel.shmmax : désigne le maximum de mémoire partagée entre les processus.

Pour connaître sa valeur actuelle voici la commande : cat /proc/sys/kernel/shmmax

Valeur par défaut : kernel.shmmax=33554432  (32 Mo de segment )

Pour changer cette valeur sysctl -w kernel.shmmax=134217728 (soit 128 Mo)  (cette valeur a été choisie par rapport à la configuration citée plus haut. Elle pourra donc être modulée)

Ensuite toute la configuration se fera dans le fichier : postgresql/x.x/main/postgresql.conf

work_mem=10MB : Ce paramètre est utilisé pour chaque connexion pour les opérations de tris et de hachages.

max_connexions=100 : Valeur par défaut, à conserver.

maintenance_work_mem=128MB : Ce paramètre est utilisé pour les opérations de maintenance (CREATE INDEX, VACUUM, etc). (On pourra jouer sur ce paramètre en fonction de la configuration du serveur)

effective_cache_size=1GB : Permet de donner à l’optimiseur une idée de la mémoire disponible pour le cache des tables et des index. En général, on peut le positionner jusqu’à 2/3 de la RAM pour une machine dédiée à PostgreSql, mais la moitié est suffisante. (On pourra jouer sur ce paramètre en fonction de la configuration du serveur)

shared_buffers = 64MB : Taille des buffers de mémoire partagée entre les threads PostgreSQL. (On pourra aussi jouer sur ce paramètre en fonction de la configuration du serveur)

wal_buffers = 4 MB Buffer alloué au process wal_writer. Largement suffisant, sachant qu’il y a très peu d’écriture en utilisation normale vu que nous sommes dans un contexte décisionnel avec un datawarehouse qui est utilisé pour faire de la lecture intensive.

checkpoint_segments = 10 : Nombre de segments écrits dans le fichier de LOG avant checkpoint, ie écriture dans les fichiers de data.

checkpoint_completion_target = 0.8 : Pourcentage de temps utilisé par le process writer pour effectuer le checkpoint par rapport au temps max d’écriture sur les 10 segments de LOG. Ce paramètre permet de diluer l’application des modifications sur les fichiers de data dans le temps.

random_page_cost = 2.0 : Passer à 2.0 pour les disques rapides récents, 4.0 (défaut) pour les disques lents. Il favorise l’utilisation des index.

Redémarrer postgresql pour appliquer ces changements :
/etc/init.d/postgresql-x.x restart

Le changement de ces quelques paramètres a vraiment amélioré significativement nos performances. J’espère que ce post pourra  en aider d’autres pour que leurs requêtes SQL soient encore plus réactives. Si vous connaissez d’autres astuces, n’hésitez pas postez!

19 avril 2010
par maryam khiali
5 Commentaires

Un point sur la solution Jaspersoft 3.7 version professionelle

La restitution est le résultat du travail acharné de la MOA, MOE et des développeurs. Le choix de l’outil pour créer et afficher cette restitution est toujours difficile.

Pour la restitution nous avons misé sur la solution Jaspersoft. Nous avons actuellement la version 3.7 professionnelle.

Après un an de développement de rapports, nous avons été forcés de constater que notre plateforme de développement n’était pas toujours très stable.

Avant de mettre les rapports en production, nous avons fait intervenir un architecte afin qu’il fasse des tests de montée en charge. Le but étant de pouvoir agir en conséquence soit sur la base de données, soit sur le matériel, l’application TOMCAT…

Afin de réaliser les tests, nous lui avons fourni un rapport d’une dizaine de pages, d’une dizaine de sous rapports à exécuter.

Le temps nominal d’exécution de ce rapport était de 7 secondes. L’architecte a donc simulé l’attaque du serveur par plusieurs utilisateurs qui exécuteraient en même temps ce rapport. Il a joué sur plusieurs paramètres :  la fréquence, le nombre de rapports exécutés en même temps.

Lors de la génération de 10  rapports de ce genre en même temps  le temps de réponse s’en est trouvé très fortement dégradé et certaines des demandes ne sont pas traitées et renvoyées directement en échec.

L’architecte s’est rendu compte que Jasperserver  :

  • ne permet pas de limiter le nombre de rapports générés simultanément
  • ne permet pas d’isoler l’IHM et le traitement des rapports
  • ne dispose pas de mécanisme de file d’attente

Si le serveur ne tombe pas actuellement dans ces conditions, c’est grâce à un nombre de pool de connexion limité à 5 dans les fichiers de configuration de Jaspersoft.

Nous avons donc contacté Jaspersoft avec l’architecte. Pour pallier à ces problèmes ils  nous ont donc recommandé d’augmenter la JVM dans TOMCAT(configurer JAVA_OPTS dans <TOMCAT>/bin/setclasspath.sh) ainsi que d’augmenter la puissance de notre hardware.

Ces problèmes Jaspersoft les traitera dans les prochaines versions. En attendant il faudra passer par un fork en faisant appel à des solutions standards pour ajouter les options que Jasperserver ne gère pas actuellement. En effet nous avions proposé de développer une solution chez nous puis de la reverser à la communauté mais  leur système de validation à l’air très compliqué et cela pourrait prendre trop de temps à être accepté. Ils préfèrent développer ces options en interne.

Voici l’architecture finalement attendue :

architecture_jasper2

9 avril 2010
par maryam khiali
2 Commentaires

Actuate Birt

Au salon decideo, j’ai fait la connaissance de la solution « Actuate birt ». Je leur ai demandé de passer nous faire une petite présentation. Je vous propose donc un compte rendu.

Tout d’abord voici l’architecture :

birt_architecture

Description de leurs produits :

  • Birt : est « le projet BI open source » d’eclipsequ’Actuate combine avec la technologie web 2.0 . Birt est le coeur de leur solution.
    • Birt Rich Information Application
      • Birt interactive viewer : plateforme ad-hoc ou l’utilisateur pourra modifier les rapports que l’IT lui aura proposés, à sa convenance.
      • Birt studio : permet aux utilisateurs finaux plus évolués de créer leurs propres rapports à travers un « univers » (cf univers BO)
      • Birt designer : permet au développeur  IT de construire les rapports de masse et les rapports intermédiaires un peu plus interactifs et de les publier sur la plateforme finale.
      • Birt flash and dashboard :c’est la partie où l’utilisateur pourra construire des rapports sexy avec des graphiques, jauges…
  • Birt spreadsheet : cette brique est une réplique à l’identique d’Excel en JAVA. Inutile de préciser que les exports Excel, quels qu’ils soient, sont extrêmement bien gérés.
  • Birt performance scorecard
  • Birt analytics : navigation dans un cube

Après cette brève description des principales briques que propose Actuate, voici les caractéristiques du produit qui d’après moi, font vraiment la différence :

Tout d’abord ce produit respecte les standards avec un portail en AJAX intégrable dans un autre portail ou pouvant faire office de portail principal. L’avantage  d’AJAX (asynchrone javascript XML) est  l’affichage d’informations au fur et à mesure lors de la génération d’un rapport par exemple. Pour le client, cette finalité est vraiment importante surtout lors de générations de rapports conséquents :  il n’attend plus sans savoir ce qu’il se passe.

De plus, derrière chaque objet que propose Actuate se cache du XML. N’oublions pas que Birt est un projet eclipse. Ce produit est donc la BI vue par les standards eclipse…

L’application propose une méthode de construction de rapports basée sur deux concepts:

  • les modèles : qui correspondent à un modèle de page ou un template
  • les librairies : qui correspondent à l’association de graphiques, libellés, tableaux… qui iront toujours ensemble et qui pourront ainsi être mutualisés et réutilisés très facilement.

En plus de permettre au développeur d’être méthodique, Actuate offre la possibilité de créer des rapports « sexy »,  en y  incluant des objets en flash. Ce format est intéressant car après export, le document restera toujours interactif.

Mais ce qui fait que cet outil est impressionnant en plus de proposer des objets « sexy », c’est qu’un objet peut avoir différentes vues. En effet l’utilisateur final pourra décider de représenter les données sous différents types de graphiques qu’il pourra choisir très facilement. De plus chaque graphique pourra proposer à l’utilisateur non seulement une multiview mais aussi la possibilité de choisir la granularité qu’il souhaite : l’année, le mois le trimestre par exemple pour la dimension temps…

L’intéractivité est donc poussée au maximum pour que l’utilisateur soit le plus autonome possible avec des outils très intuitifs.

Actuate c’est 15 ans d’expérience. Le produit est vraiment abouti : après l’exploitation de rapports statiques pour les rapports de masse, les tableaux de bords (dashboards) ou encore l’exploitation de cubes,  d’univers, Actuate propose le rapport intermédiaire qui est finalement un rapport de masse grâce auquel l’utilisateur aura des possibilités d’interagir avec la présentation en y faisant des tris, des filtres…Je n’avais jamais vu ça avant…

De plus la maturité de ce produit fait qu’il sait répondre à certaines problématiques importantes :

1) Pour pallier à des problèmes de temps de réponse  liés à un débit limité ou à une volumétrie de données trop importante, non seulement Actuate propose la solution AJAX mais en plus, une fois un rapport généré par un utilisateur, les autres utilisateurs pourront le visualiser avec un temps de réponse sans précédent car le rapport sera « en cache » et donc déconnecté de la base de données. Ce mode déconnecté propose, si on le souhaite, d’indiquer un temps de rafraîchissement : c’est ainsi que la personne pourra faire du « temps réel ».

Toujours dans ces même problématiques mais cette fois lors de la création de rapports liés à un « univers » , Actuate a comme stratégie de ne faire la création du rapport que sur un échantillon de lignes. Ainsi l’utilisateur final pourra construire son rapport très facilement sans se préoccuper des problèmes de réseaux ou de volumétrie de données. Et lors de la génération finale il aura toutes les données qu’il pourra par la suite filtrer s’il le souhaite, faire des calculs etc. Petit bonus, la navigation dans l’univers peut être vraiment agréable car l’utilisateur aura la possibilité de plier et déplier les lignes comme pour un cube.

2)Actuate a pensé au partage de ces beaux rapports : c’est donc aussi un outil collaboratif puisque l’utilisateur final pourra communiquer ses documents, les commenter, si on en lui donne les droits, avec les autres.

Toujours dans un souci de collaboration et d’arrêter les processus cloisonnés IT/utilisateur final, cette solution permet la reprise de rapports créés par l’utilisateur final,  via des drags and drop, très facilement. Du coup, une vraie communication de conception pourra s’installer entre les créateurs de rapports.

3)Afin d’uniformiser la création de rapports des feuilles de styles pourront être créées et appliquées à la plateforme, aux graphiques, aux templates…

4)En plus de toutes ces options, Actuate propose de gérer du versionning.

Ce logiciel m’a vraiment plu car il prend en compte les problématiques qu’on peut rencontrer avec d’autres logiciels: le réseau, la volumétrie de données, le temps réel, l’interactivité, la création de rapports sexy…

La dernière version est « Actuate 10″ alignée sur la version de birt 2.3 et en juillet prochain ils espèrent sortir « Actuate 11″ aligné sur Birt 2.5.

Les versions d’Acuate sortent à peu près tous les 18 mois. Ce qui peut rassurer nos administrateurs car une version tous les 3 mois peut être lourde à gérer.

Mais quels sont leurs points faibles? Si quelqu’un a un retour d’expérience à faire n’hésitez pas, postez!

Pour aller sur le site cliquer sur l’image

actuate_birt