Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 16h29   #1
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Par défaut Cross tab afficher tous les jours du mois

Bonjour à tous et à toutes,

Comment fait on pour afficher tous les jours d'un mois passé en paramètre avec date_debut et date_fin dans une crosstab.

Merci d'avance pour votre aide
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 09h48   #2
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
C'est au niveau de la construction de ton dataset que ça va se jouer. Si tu veux voir affiché chaque jour, tu devras avoir une ligne de dataset au moins par jour, avec une date correspondant au jour.

Ton besoin a plus l'air d'un graphique que d'un data cube. Tu veux faire quoi, simuler un calendrier ?
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 10h23   #3
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par nicolas.1.vives Voir le message
C'est au niveau de la construction de ton dataset que ça va se jouer. Si tu veux voir affiché chaque jour, tu devras avoir une ligne de dataset au moins par jour, avec une date correspondant au jour.

Ton besoin a plus l'air d'un graphique que d'un data cube. Tu veux faire quoi, simuler un calendrier ?
Oui en quelque sorte je voudrai simuler un calendrier. J'ai eu se besoin à plusieurs reprise lorsque je veux faire des statistiques sur un mois complet. (cf. ici)
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h36   #4
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Bon, bah tu es bon pour changer ton modèle de données.
Tu vas devoir insérer une ligne pour chaque jour entre tes dates, avec la date correspondant quelque part et des valeurs nulles dans les autres champs.
Car on ne peut pas afficher des lignes relatives à un groupe sur une valeur de champ si cette valeur n'existe pas dans le jeu de données.
Bon courage.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h09   #5
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par nicolas.1.vives Voir le message
Bon, bah tu es bon pour changer ton modèle de données.
Tu vas devoir insérer une ligne pour chaque jour entre tes dates, avec la date correspondant quelque part et des valeurs nulles dans les autres champs.
Car on ne peut pas afficher des lignes relatives à un groupe sur une valeur de champ si cette valeur n'existe pas dans le jeu de données.
Bon courage.
Le soucis étant que le modèle de donnée m'a été donnée telle quel et je n'ai pas le droit de le changer. Donc j'en déduit qu'il n'y a pas de solution de cette façon la!

D'après toi est il possible de le faire via le script?
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h22   #6
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Je ne m'y connais pas assez en scripting javascript ou SQL pour te proposer une solution. Personnellement j'utilise des dataset alimentés en java (cia les Scripted Data Sources et les Data Set Event Handlers), et en java ce serait assez facile, mais si tu n'as pas ce genre d'architecture en place ca serait couteux de le faire juste pour ça.
Tu vas devoir fouiller. Tu peux aussi demander de l'aide sur le forum anglophone, ils sont plus nombreux et plus compétents là bas (sur birt-exchange).

Bon courage.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h51   #7
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
D'accord je vais essayer sur birt-exchange!
Merci pour ton aide
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h28   #8
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Si VRAIMENT tu n'as pas de solution, tu peux tenter cet énorme bidouillage qui consiste à construire un calendrier mensuel à la main.

Je m'explique :
  • Tu fais un tableau avec un groupe sur la date, groupé par mois (il faut au minimum une date dans le mois pour qu'il s'affiche).
  • Dans la ligne de group header, tu mets un autre tableau. Ce sous-tableau est constitué de 5 lignes et 7 colonnes.
  • Tu filtres les données du sous-tableau en fonction du mois actuel de ton super-tableau.
  • Dans chaque case du sous-tableau, tu mets une agrégation sur la donnée que tu veux afficher (somme de quantité, comptage de dates, etc).
  • Sur CHAQUE agrégation, tu mets un filtre de date correspondant au jour de la case :
    • Un filtre sur le jour de la semaine, indentique pour chaque case d'une même colonne (lundi pour la première, mardi pour la seconde, etc) ;
    • Un filtre sur le jour du mois, identique pour chaque ligne (première ligne, entre 1 et 7 ; deuxième, entre 8 et 15 ; etc).

Tu as ton calendrier. Je sais, c'est pourri, c'est la vie

Edit :
A vrai dire, tu n'as pas besoin de faire de sous-tableau : fais juste 5 lignes de group header dans ton premier tableau et construis ton calendrier dedans directement.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h18   #9
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Merci, je vais tout de même essayer de trouver une solution avec une cross tab afin d'avoir tout les jours sur une seul ligne.
Cependant, je vais tout de même essayer ce que tu me propose par curiosité
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h25   #10
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Le principe est le même, tu vas avoir une ligne de 31 cases et un filtre sur le jour du mois.

Tu me diras ce que ça aura donné.

Bon courage.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 09h35   #11
Membre régulier
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 94
Points : 94
Bonjour

Exemples de Script SQL (Oracle) permettant de lister tous les jours entre 2 dates

L'idée étant de faire son select sur une table relativement grosse en nombre de lignes et pouvant contenir l'ensemble des jours à générer
Code :
1
2
3
SELECT TO_DATE ('MaDatedeDebut', 'dd/mm/yyyy') + ROWNUM -1 AS jour
          FROM  commandes
         WHERE ROWNUM <= TO_DATE ('MaDatedeFin', 'dd/mm/yyyy') - TO_DATE ('MaDatedeDebut', 'dd/mm/yyyy') + 1
Autre méthode moins gourmande en ressources car elle n'utilise pas de table du modele
Code :
1
2
SELECT LEVEL + to_date('01/01/2009', 'dd/mm/yyyy') - 1 as jour FROM dual
CONNECT BY LEVEL < to_date('01/02/2009', 'dd/mm/yyyy') - to_date('01/01/2009', 'dd/mm/yyyy') + 1
Peut-être s'en inspirer si vous n'utilisez pas Oracle.
J'espere que cela pourra aider.
scariou29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 13h08   #12
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Merci pour cette réponse.
Cependant, je n'utilise pas Oracle et ceci ne fonctionne pas lorsque je l'execute (TO_DATE n'existe pas, ROWNUM impossible a definir,...)
Merci tout de même car ceci pourrait me servir une autre fois
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web