Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Débuter
Débuter Forum d'entraide pour débuter avec Business Object
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 05/09/2011, 17h32   #1
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Par défaut Etat au dernier jour de chaque mois

Bonjour à tous,

Je fais appel à vos connaissances car j’ai écumé de nombreux posts sans trouver de réponses à ma question…
Je travaille sur Deski XiR2 dans un univers Ressources Humaines, et dans de nombreuses requêtes j’ai besoin sur un même tableau d’observer, au dernier jour de chaque mois, les différents éléments relatifs à la carrière d’un agent : par exemple, son type de contrat de travail, son poste, sa classification…

Exemple sur le type de contrat de travail :

____________31/01/11____ 28/02/11____31/03/11
Agent 001 : ___CDD_________CDD_________CDI
Agent 002 : _STAGIAIRE______CDD_________CDI


En admettant que je souhaite monter la requête à partir de l’exemple précédent, j’ai à ma disposition les dimensions suivantes :
- Matricule
- Nom
- Prénom
- Type de contrat
- Date de début de contrat
- Date de fin de contrat

Mais aucun indicateur, seulement des informations alphanumériques à retrourner.
Je précise que j’ai à ma disposition le Designer. J’ai d’ailleurs réalisé un calendrier par le biais d’une table dérivée et ajouté les dimensions ‘JOURID’, ‘ANNEE’, ‘MOIANNEE’… comme expliqué dans un autre sujet, mais je dois être bien loin du chemin à suivre car le résultat est proche de néant.
Je ne suis même pas sûr de l’utilité d’avoir créé une telle table, n’ayant pas su à quoi relier le champ ‘JOURID’ dans la jointure externe…
D’avance un grand merci pour aide !
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 17h51   #2
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Bonjour,

Bon point : tu as tous les éléments pour obtenir ce que tu souhaites (ou presque).

En fait, la table calendrier sera très utile dans ce cas, mais il faudra s'assurer de plusieurs choses :
  • Que celle-ci couvre une période suffisamment grande. La rendre dynamique pourrait être intéressant
  • Il faudra créer un nouveau champ de cette table permettant d'identifier le dernier jour du mois.
  • Créer une jointure entre cette table calendrier et la table précisant les dates de débuts et de fin de contrat, avec la formule JOUR_ID BETWEEN DATE_DEBUT AND DATE_FIN
Cela fait, il faudra dans la requête, sur BO, filtrer les derniers jours de mois (à partir du nouveau champ dans la table calendrier)
Et dans les objets de résultat, il faudra ramener l'identifiant de l'employé, JOUR_ID, ainsi que le type de contrat.

Il ne restera plus ensuite qu'à créer le tableau croisé.
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 18h17   #3
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Merci beaucoup de cette réponse rapide!

Etant plutot novice dans le maniement du langage SQL, je sèche un peu devant la tâche à accomplir...

Pour créer ma table dérivée, j'ai utilisé le code suivant :

Code :
1
2
3
4
5
6
7
SELECT 
to_date('20110101','yyyymmdd') + (rownum - 1) AS JOURID, 
to_date('01'||to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'mmyyyy'),'dd/mm/yyyy') AS MOISANNEE,
to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'mm') AS MOIS, 
to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'yyyy') AS ANNEE 
FROM dual 
connect BY to_date('20110101','yyyymmdd') + (rownum - 1) <= to_date(to_char(add_months(sysdate,-1),'yyyy')||'1231','yyyymmdd')
- Comment y ajouter une fonction 'DernierJourDuMois' sans erreur ? (LAST_DAY en SQL?)
- il parait effectivement très interessant de la rendre dynamique, afin d'interroger les années précédentes! j'ai pu déduire qu'il fallait utiliser une fonction SYSDATE, mais toujours pareil, mon manque de technicité dans le domaine me bride rapidement...
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 10h51   #4
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
En fait, la formule est déjà dynamique (il est fort ce Bruno )
Elle part du 01/01/2011 jusqu'au 31/12 de l'année en cours.

Donc, si tu veux qu'elle commence plus tôt, il faut changer toutes les occurrences de "20110101" pour y appliquer l'année de ton choix.

Ensuite, pour le dernier jour du mois, il faut effectivement rajouter une fonction last_day :

Code :
1
2
3
4
5
6
7
8
SELECT
to_date('20110101','yyyymmdd') + (rownum - 1) AS JOURID,
to_date('01'||to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'mmyyyy'),'dd/mm/yyyy') AS MOISANNEE,
to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'mm') AS MOIS,
to_char(to_date('01012011','dd/mm/yyyy') + (rownum - 1), 'yyyy') AS ANNEE,
last_day(to_date('20110101','yyyymmdd') + (rownum - 1)) AS DERNJOURMOIS
FROM dual
connect BY to_date('20110101','yyyymmdd') + (rownum - 1) <= to_date(to_char(add_months(sysdate,-1),'yyyy')||'1231','yyyymmdd')
Ensuite donc, dans ton rapport BO, il faudra créer une condition dans ta requête avec :
Code :
JOURID Egal à (Objet) DERNJOURMOIS
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h09   #5
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
On progresse!! Le résultat obtenu n'est encore pas tout à fait celui escompté : l'Univers sur lequel je travaille est de type 'historique', c'est à dire qu'il retourne toute la chronologie des éléments d'une carrière d'un salarié.
Dans notre cas, les types de contrat :

Par exemple, pour 'Monsieur MACHIN', qui était en CDD du 01/01/2011 au 31/03/2011, puis en CDI à compter du 01/04/2011, il retourne les données sous cette forme :

__________________31 janv___28 fev__31 mars__30 avr___31 mai___30 juin ...
Monsieur MACHIN_____CDD_____CDD_____CDD_____CDD_____CDD_____CDD ...
Monsieur MACHIN_____CDI______CDI_____CDI______CDI_____CDI______CDI ...

au lieu de :

__________________31 janv___28 fev__31 mars__30 avr___31 mai___30 juin ...
Monsieur MACHIN_____CDD_____CDD_____CDD_____CDI_____CDI_____CDI ...


Dans les conditions de la requête, lorsque j'ajoute : <Date de fin de contrat> 'Non renseigné', il me retourne les données sous cette forme :

__________________31 janv___28 fev__31 mars__30 avr___31 mai___30 juin ...
Monsieur MACHIN_____(vide)___(vide)___(vide)_____CDI_____CDI_____CDI ...

Merci de ton aide!
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h12   #6
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Tu as bien créé la jointure entre la table calendrier et la table des infos employés ?
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h20   #7
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Oui, sous cette forme la :

Code :
CALENDAR.JOURID BETWEEN RHB_AGT_POS.DATEDEBUT AND RHB_AGT_POS.DATEFIN...
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h31   #8
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Mmmmm... C'est bizarre. A la rigueur, il t'aurait renvoyé ça :

__________________31 janv___28 fev__31 mars__30 avr___31 mai___30 juin ...
Monsieur MACHIN______CDD_____CDD_____CDD_____(vide)___(vide)___(vide)...
Monsieur MACHIN_____(vide)___(vide)___(vide)_____CDI_____CDI_____CDI ...

... J'aurais compris. Mais là, on dirait qu'il ne prend pas en compte la jointure. Peux-tu vérifier si l'univers a bien été sauvegardé, s'il n'y a pas un chevauchement dans les périodes dans la table pour Monsieur Machin et enfin, peux-tu quitter et relancer BO avant de ré-exécuter ta requête ?
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h38   #9
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Bien vu, après redémarrage il retourne les données comme tu viens de l'écrire !

__________________31 janv___28 fev__31 mars__30 avr___31 mai___30 juin ...
Monsieur MACHIN______CDD_____CDD_____CDD_____(vide)___(vide)___(vide)...
Monsieur MACHIN_____(vide)___(vide)___(vide)_____CDI_____CDI_____CDI ...
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h40   #10
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
OK, on touche au but.

En fait, il te crée deux lignes car il y a plusieurs lignes pour chaque employé et que <Type de contrat> est une dimension.

Pour palier le problème, dans le corps de ton tableau, remplaces :
par :
Code :
=Max(<Type de contrat>)
Je sais, c'est tarabiscoté...
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h53   #11
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Tordu, mais vraiment efficace!!! Quel talent...
Dernière petite interrogation : Avec un objet dimension on peut effectuer des regroupements.

Pour faire la même chose avec un indicateur, je suis obligé de passer par des 'Si ... DansListe...Alors...Sinon' ?

Ou est-il possible d'effectuer le groupement en premier : <REGR_type de contrat>, puis de faire un Max.(<REGR_type de contrat>) ?
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h59   #12
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Je te conseille la deuxième solution : d'abord faire le regroupement sur ta dimension et ensuite utiliser le Max().

En fait, ici tu peux le faire comme ça car il s'agit d'un "faux" indicateur, il est créé uniquement à cause du max.

Mais si l'objet d'origine était un indicateur (défini comme cela dans l'univers), il aurait fallu passer par Si..Alors..Sinon
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 16h02   #13
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
C'est du grand art... ça fonctionne parfaitement.
Encore un grand merci pour ton aide!
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 17h38   #14
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Une petite dernière pour la route...

Voyant que cela fonctionnait avec la table 'type de contrat', j'ai voulu faire de même avec les différentes tables composant les caractéristiques d'un salarié, comme par exemple les tables 'temps de travail', 'service' ou encore 'poste' (chacune possédant à peu près les mêmes champs : type de..., date de début..., date fin...)

Pour chacune, j'ai effectué la même jointure que sur le modèle précédent (between...and...) sur la table 'CALENDAR', mais à l'exécution de la requête, il me retourne le message d'erreur suivant :

'Erreur lors de la génération du SQL : Combinaison incompatible d'objet (QP0004)'

Où est l'erreur?
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 17h41   #15
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Le problème vient du fait de tout mettre dans une seule requête : sans doute y a-t-il des boucles dans l'univers.

Dans ce cas deux choix :
  • Soit créer une table calendrier pour chaque table à étudier (avec autant d'objets)
  • Soit créer une requête différente pour chacune de tes approches, quitte à les lier ensuite afin de croiser les résultats
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 17h45   #16
Invité régulier
 
Homme Adrien MARLINGE
Contrôleur de gestion RH
Inscription : septembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Adrien MARLINGE
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Contrôleur de gestion RH
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2011
Messages : 21
Points : 6
Points : 6
Je vois le problème, et je penche pour la deuxième solution...
Encore merci!!!
adrien.marlinge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h14.


 
 
 
 
Partenaires

Hébergement Web