|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 10 ![]() |
Bonjour,
Mon rapport BIRT utilise un dataset qui contient les colonnes suivantes: Id DateDebut Etat Les données sont par exemple (c'est une sorte d'historique): N1, 01/02/2011, Creation N2, 02/02/2011, Creation N1, 07/02/2011, Execution N2, 09/02/2011, Execution Je souhaiterais ajouter une colonne calculée à mon dataset qui me permettrait d'avoir une date de fin d'un état. Ce qui donnerait (Id, DateDebut, DateFin, Etat): N1, 01/02/2011, 07/02/2011, Creation ==> 07/02/2011 car N1 passe à l'état Execution à cette date là. N2, 02/02/2011, 09/02/2011, Creation ==> 09/02/2011 car N2 passe à l'état Execution à cette date là. N1, 07/02/2011, 03/10/2011, Execution ==> 03/10/2011 date du jour car N1 toujours en execution. N2, 09/02/2011, 03/10/2011, Execution ==> 03/10/2011 date du jour car N2 toujours en execution. J'ajoute une colonne calculée dans le dataset, pas de pb. Mais dans l'expression javascript, j'ai essayé une expression du style mais sans succès: Total.first(DateDebut ,Id =row["Id"] && Etat!=row["Etat"] && DateDebut>row["DateDebut"]); Autrement dit, je voudrais que la DateFin contienne: la première DateDebut dont la ligne a le même id que la ligne courante, un Etat différent de celui de la ligne courante, et une DateDebut supérieure à la DateDebut de la ligne courante. Tout ceci, si on considère que les enregistrements sont lus dans le sens chrono comme le fourni le fichier de données (fichiers cvs). Mais la colonne calculée est vide. Auriez-vous une idée ? et est-ce possible ? |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Salut valouee,
A mon avis c'est plutôt un traitement de type alimentation de données, les outils de restit détestent ce genre de choses Ton expression avec Total est une très bonne idée, mais je crains que les aggrégats soient évalués par Birt aprés le chargement des lignes et non pas à chaque ligne, ce qui empêche d'utiliser un filtre du type Id =row["Id"]. J'espère me tromper. Sinon, si tu as la main sur la manière dont le fichier est trié (1er critère: Id 2em critère: DateDebut par ordre décroissant) tu peux t'en sortir assez facilement en stockant dans 2 variables globales l'Id et la DateDebut de la ligne précédente, et une expression du type: Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Mea culpa, avec un joined dataset tu peux mettre les différents états (création, exécution, fin) sur une même ligne et donc facilement calculer la date de fin de chaque état, totalement indépendamment de l'ordre du fichier.
Bon courage A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com