Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Cognos
Cognos Forum d'entraide Cognos : Impromptu, Powerplay, transformer,...
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 12/09/2011, 16h39   #1
Invité de passage
 
Inscription : juin 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 11
Points : 4
Points : 4
Par défaut [Framework 8.3] Problème d'opération sur des dates

Bonjour à tous,

Je sollicite votre aide sur un problème qui m'ennuie depuis quelques jours.
Je souhaite construire un modèle me permettant de suivre des traitements journaliers d'alimentation.
Je dispose donc d'une table avec les champs nom du traitement, start_timestamp et end_timestamp (non modifiable car c'est une table d'audit de l'ETL).
Je cherche à suivre l'évolution de la durée des traitements et c'est là qu'arrive mon problème : je calcule la durée en faisant end_timestamp - start_timestamp, ce qui fonctionne très bien quand je l'exécute dans SQL+ directement, mais pas dans le Framework !
J'obtiens l'erreur suivante :
Code :
1
2
3
RQP-DEF-0177 Une erreur s'est produite lors de l'exécution de l'opération 'sqlPrepareWithOptions' état = '-120'.
UDA-SQL-0458 Échec de l'opération PREPARE : il faudrait un traitement LOCAL des donnée, mais cette OPTION n'a pas été activée.
UDA-SQL-0492 La base de données ne prend pas en charge l'arithmétique Date/Heure, tel que décrit dans le standard ANSI. Impossible de poursuivre l'opération ; il faudrait que le traitement des données soit local
Je ne comprends déjà pas pourquoi il bloque mais soit, je passe le traitement en local et cela fonctionne.
Le problème : une fois en local, je ne peux pas utiliser les fonctions Oracle pour modifier le format du champ calculé, que je veux transformer en valeur numérique pour pouvoir l'afficher dans un graphique...

L'idéal serait de ne pas avoir à utiliser un traitement local (qui prend plus de temps).
A noter que je ne peux pas utiliser de fonction du type _days_between car il me faut une précision à la seconde. D'autre part, l'utilisation d'une procédure stockée est également impossible car je ne peux que faire des select dans la base.

Merci d'avance si vous avez une solution à mon problème !
Blyver est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 10h27   #2
Membre du Club
 
Inscription : mars 2010
Messages : 106
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 106
Points : 53
Points : 53
Bonjour,

Tu peux d'abord utiliser la fonction extract() pour extraire la seconde, la minute, l'heure...et ensuite, tu fais le calcul.

Code :
1
2
3
extract(second;end_timestamp) - extract(second;start_timestamp) +
(extract(minute;end_timestamp) - extract(minute;start_timestamp))*60 +
(extract(hour;end_timestamp) - extract(hour;start_timestamp))*3600
J'avoue que c'est pas une solution parfaite, mais ça doit fonctionner
hittony 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 00h00.


 
 
 
 
Partenaires

Hébergement Web