IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Expert éminent sénior
    Avatar de Glutinus
    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    avril 2005
    Messages
    5 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : avril 2005
    Messages : 5 328
    Points : 25 162
    Points
    25 162
    Billets dans le blog
    3
    Par défaut [INFA 9.5.1] Retourner une chaine de caractères après un caractère spécial.
    Bonjour,

    Sur Informatica j'ai des problèmes de précision.

    Effectivement par exemple dans ma source Oracle j'ai le nombre '15.24' et Informatica peut générer un chiffre du genre '15.2399999999'. Même si je limite le nombre de chiffres après la virgule avec un TRUNC sous Oracle dans mon SQ, ainsi que dans les types d'Informatica, lorsque je convertir en varchar (nécessaire) je me retrouve avec plein de chiffres après la virgule.

    Je me suis dit que je pouvais traiter cela directement dans Informatica.

    Je recherche donc une méthode à mettre dans une expression pour repérer le séparateur (que j'ai fixé à un point) puis après choisir 0,2,4 chiffres après la virgule en faisant une lookup / jointure avec une table de paramètre car chaque ligne peut contenir indéfiniment un montant, un pourcentage (deux chiffres après la virgule) ou un nombre entier.

    Ou alors une fonction Oracle par défaut qui fait pareil (charger une chaine de caractères jusqu'à trouver un point puis fournir N chiffres après la virgule avec une jointure)
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  2. #2
    Modérateur

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    8 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 8 115
    Points : 16 351
    Points
    16 351
    Par défaut
    Quel est le type de vos nombres au niveau de la table, du SQ et de ce qui suit ?
    Si vous mettez un type numeric(5,2) par exemple, ça pourrait résoudre votre problème.
    Si vous utilisez des types réels / flottant, c'est plus compliqué.

  3. #3
    Expert éminent sénior
    Avatar de Glutinus
    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    avril 2005
    Messages
    5 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : avril 2005
    Messages : 5 328
    Points : 25 162
    Points
    25 162
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Merci Waldar.

    C'est effectivement du numeric.

    J'ai résolu finalement mon problème d'une autre manière à savoir faire un maximum d'opérations dans le SQ (performance globalement correcte car le flux initial est assez faible en volumétrie environ 50.000 lignes) puis en faisant un to_char. C'est assez complexe à expliquer mais je pense que la perte de précision se faisait juste après un Aggregator et malgré un to_char plus ou moins loin en aval ça continuait à fournir beaucoup de décimales fausses

    Du coup ma somme et mon group by sont dorénavant dans le SQ et la première opération qui suit est un to_char et ça passe nickel.
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  4. #4
    Membre habitué
    Homme Profil pro
    consultant ETL
    Inscrit en
    septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2008
    Messages : 97
    Points : 185
    Points
    185
    Par défaut conversions implicites
    bonjour,

    par hasard, dans ton mapping, y aurait il des conversions implicite entre un type décimal et un varchar. C'est à dire une connexion entre 2 transformations dont les ports ne sont pas du même type..... au lieu d'avoir utilisé explicitement une fonction de conversion ?

  5. #5
    Expert éminent sénior
    Avatar de Glutinus
    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    avril 2005
    Messages
    5 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : avril 2005
    Messages : 5 328
    Points : 25 162
    Points
    25 162
    Billets dans le blog
    3
    Par défaut
    Hello,

    Non, je faisais des to_char à chaque fois.

    J'avais essayé : un TRUNC dans la fonction Oracle (sous TOAD ça apparaissait bien)
    Puis un TRUNC dans une expression puis une sortie fichier => c'était OK
    Puis un to_char de cette valeur puis une sortie fichier => et là ça partait en vrille malgré le fait qu'en plus à l'original, le decimal trunqué deux fois avait un scale de 4.
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. retourner une chaine de caractere
    Par acik59 dans le forum C
    Réponses: 8
    Dernier message: 19/04/2007, 15h59
  2. Retourner une chaine a une fonction C
    Par insa59 dans le forum C
    Réponses: 20
    Dernier message: 27/03/2007, 16h20
  3. Retourner une chaine de caractére
    Par insa59 dans le forum C
    Réponses: 22
    Dernier message: 23/03/2007, 17h29
  4. Réponses: 23
    Dernier message: 13/11/2006, 03h33
  5. main() qui retourne une chaine
    Par lejert dans le forum C
    Réponses: 5
    Dernier message: 19/07/2006, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo