Bonjour,
Ca fait 2 jours que je me traîne un problème sur un de mes jobs sous BODI, et là je commence à en avoir marre car il n'y a rien de cohérent dans tout ça.
Petite précision, mon système marchait avant sur la 6.1 mais depuis que j'ai migré sur la XI je me retrouve avec des erreurs dans un de mes champ.
Voilà mon problème :
j'ai une table A dans laquelle on trouve :
- ID_JRN -> la date du jour format DD/MM/YYYY
- ID_HRE -> l'heure du jour GMT au format HH:MI
- ID_HRE_05M -> les tranches horaires de 5min initialisées ici à NULL
Le but de mon Data Flow est de remplir mon champ ID_HRE_05M dans la table cible B, qui a la même structure que la table A, en plusieurs étapes :
- Je mappe mon ID_JRN avec le calcul suvant :
Cela me permet, dans un premier temps, de concaténer DATE et HEURE dans ID_JRN qui est maintenant un DATETIME dans ma table B, puis dans un second temps de prendre en compte le décalage horaire entre les saisons d'hiver et d'été.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ifthenelse( ( (concat_date_time(Query.ID_JRN, to_date(Query.ID_HRE, 'HH24:MI')) >= TR_DWH_SPA_ANN.DEB_DAT_ETE) AND (concat_date_time(Query.ID_JRN, to_date(Query.ID_HRE, 'HH24:MI')) <= TR_DWH_SPA_ANN.FIN_DAT_ETE) ), (concat_date_time(Query.ID_JRN, to_date(Query.ID_HRE, 'HH24:MI')) + num_to_interval(2, 'H')), (concat_date_time(Query.ID_JRN, to_date(Query.ID_HRE, 'HH24:MI')) + num_to_interval(1, 'H')) )
- Je mappe ID_HRE à partir de ID_JRN précédent pour avoir mon GMT+1 (+heure d'été ou non)
- Je remplis mon code tranche horaire 5M avec le calcul suivant
Je récupère de ce calcul un décimal, que je mappe avec une dernière query BODI en varchar(3).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 trunc( ( (substr(Query_2.ID_HRE, 1, 2) * 12) + ((substr(Query_2.ID_HRE, 4, 2) / 5) + 1) ), 0 )
Le souci c'est que mes données varchar en 3 caractère contiennent un '.' final pour les calculs sur 2 digits. Par exemple si le résultat du calcul précédent donne 92, j'aurais la chaîne '92.' dans mon champ !!
J'ai essayé de zappé les 2 premiers points de mon DF en prenant directement les heures ID_HRE de la table A (qui ne prennent donc pas en compte le décalage horaire) et je n'ai pas ce problème...
Que se passe-t-il donc ??
Merci d'avance pour votre aide
Partager