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

SSIS Discussion :

[SSIS] [2K5] extract vers un fichier csv, pb d'arrondi.


Sujet :

SSIS

  1. #1
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut [SSIS] [2K5] extract vers un fichier csv, pb d'arrondi.
    Bonjour à tous !

    je galère à faire quelque chose d'a priori très simple :
    j'ai des données dans une table (SS 2005) et je voudrais les extraire dans un fichier texte.


    Le problème : les données en base ont 4 chiffres après la virgule, à l'arrivée, parfois plus de 12...


    Dans le Connection manager "Fichier de sortie", j'ai beau changer les propriétés de la colonne, en lui demandant un DT_STR, un DT_DECIMAL ou n'importe quoi d'autre (même un booléen !), il ne se passe strictement rien : j'ai toujours des chiffres faux en sortie.


    Est-ce que vous avez une idée ?


    Merci !
    Images attachées Images attachées    

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    Si tu agrandis ta colonne dans le preview du fichier, tu verras peut être que tes chiffres sont suivis d'un E-3 ou E-4 qui indique l'écriture scientifique.
    Sinon pour le type de la colonne pour le fichier plat, float [DT_R4] devrait faire l'affaire.

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    oui j'entends bien, mais ça ne change strictement rien : je peux mettre n'importe quel type à la colonne, en résultat j'obtiens toujours le même chiffre avec des arrondis hallucinants

    avec float[DT_R4]
    name;ticker;expiry;dividend
    A2A;A2A IM Equity;2010-06-21 00:00:00;8.4500000000000006E-2
    A2A;A2A IM Equity;2011-06-20 00:00:00;7.3099999999999998E-2
    ABB;ABBN VX Equity;2009-07-27 00:00:00;0.41999999999999998
    ABB;ABBN VX Equity;2010-07-10 00:00:00;0.35220000000000001
    ACCOR;AC FP Equity;2010-05-28 00:00:00;1.4638
    ACCOR;AC FP Equity;2011-05-29 00:00:00;1.3413999999999999
    ACCOR;AC FP Equity;2012-05-30 00:00:00;1.3122

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Contrairement à ce que tu pourrais penser c'est un problème assez peu connu certes, mais déjà rencontré et qui n'est toujours pas résolu à ma connaissance.

    Cela tient à la transition des types de données en mémoire DT_Rn vers les providers d'écriture (d'après ce que l'on m'avait expliqué). Cela ne se constate que sur des arrondis très longs. Le seul workaround que je connais est de faire une DataConversion en DECIMAL de la bonne longueur avant le FlatFile Destination.

    Fais nous un retour pour savoir si ce DECIMAL s'insère bien.

    François JEHL
    Consultant Formateur
    MCITP/MCT Business Intelligence Development
    Winwise (Paris)
    http://fjehl.blogspot.com
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  5. #5
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Merci de ces précision François,
    j'avais aussi essayé la conversion de données, mais c'est idem :



    name;ticker;expiry;dividend
    A2A;A2A IM Equity;2010-06-21 00:00:00;8.4500000000000006E-2
    A2A;A2A IM Equity;2011-06-20 00:00:00;7.3099999999999998E-2
    ABB;ABBN VX Equity;2009-07-27 00:00:00;0.41999999999999998
    ABB;ABBN VX Equity;2010-07-10 00:00:00;0.35220000000000001
    ACCOR;AC FP Equity;2010-05-28 00:00:00;1.4638
    ACCOR;AC FP Equity;2011-05-29 00:00:00;1.3413999999999999

    je peux essayer n'importe quel paramètre de scale, ça n'impacte en rien le résultat.
    Images attachées Images attachées  

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    Une idée, un peu dans la continuité de ce que t'as dit François, tu pourrais convertir ce float en string dans SSIS puis en prendre seulement la partie qui t'interesse avec un SUBSTRING (composant Derived colonne). C'est cette chaîne qui sera exportée dans le fichier plat.

    Update: Non après réflexion ce n'est pas une bonne idée car le problème d'arrondi surviendra après la conversion en string;

  7. #7
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    et bien, l'idée était quand même d'éviter la bidouille pour faire quelque chose d'aussi simple...



    C'est encore plus tordu que je ne le croyais : j'ai changé mon type de données dans la base (edit : je parle du type de la colonne dividend de la table que je veux exporter), en string.
    Et dans le Flat File Destination, je lui indique c'est du String et bien... il s'en fiche, il persiste avec son arrondi !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    Je suis surpris cela dit que la technique de François n'ait pas fonctionnée chez toi avec le scale 4. As tu bien remappé le nouveau champs converti au fichier plat? On sait jamais...

  9. #9
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Hmmm... Ca n'est peut être pas surprenant.
    Alors le problème est sûrement le type choisi pour le mapping entre l'entrée et SSIS. (Le visualiseur DataViewer fait surement son propre arrondi qui "masque" la modification (i.e gain de précision inutile) du flottant.

    Quel est le type en SQL? Et il est mappé à du DT_R4, R8 en SSIS? Essaie du DT_NUMERIC par exemple (en faisant un cast vers NUMERIC dans ta requête SQL). Après cela tu fais un DataConversion vers float et tu insères cela dans le fichier.


    François JEHL
    Consultant Formateur
    MCITP/MCT Business Intelligence Development
    Winwise (Paris)
    http://fjehl.blogspot.com
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  10. #10
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    en base : numeric(18,4), j'ai aussi essayé le type real, mais c'est pareil.

    .
    Si je fais un preview au niveau de la requête dans SSIS, les chiffres sont corrects, mais sortent faux du module suivant : il y a une conversion de données foireuse dans le module Flat File Destination.


    par contre si je lui demande un délimiteur de texte, il délimite... tout !
    mais les chiffres sont bons
    "name";"ticker";"expiry";"dividend"
    "A2A";"A2A IM Equity";"2010-06-21 00:00:00";".0845"
    "A2A";"A2A IM Equity";"2011-06-20 00:00:00";".0731"
    "ABB";"ABBN VX Equity";"2009-07-27 00:00:00";".4200"
    "ABB";"ABBN VX Equity";"2010-07-10 00:00:00";".3522"
    "ACCOR";"AC FP Equity";"2010-05-28 00:00:00";"1.4638"
    "ACCOR";"AC FP Equity";"2011-05-29 00:00:00";"1.3414"

  11. #11
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Au vue de ta preview (image de ton premier post) il fait quelque chose!
    Aucun de tes "dividend" ne semble dépasser les 4 chiffres après la virgule

    C'est SSIS qui se mélasse et rajoute de la précision inutile (et fausse) après coup.

    Du coup au vu de ta requête tu peux insérer dans ton fichier des NON-flottants avec 4 après la virgule, et tu n'auras plus ton problème non?

    François JEHL
    Consultant Formateur
    MCITP/MCT Business Intelligence Development
    Winwise (Paris)
    http://fjehl.blogspot.com
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  12. #12
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    bon alors... ça marche mais je ne sais pas pourquoi.

    1°) j'ai mis un délimiteur guillemet : il m'en a mis partout, mais j'avais les bons chiffres
    2°) j'ai viré le délimiteur, il a laissé les bons chiffres.

  13. #13
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Waow. Ca sent le beau problème de BIDS ça (Une propriété mal validée qui se valide à la suite du changement... d'une autre propriété qui n'a rien à voir).

    En tous les cas... content que ton problème soit résolu. Il reste que la gestion des nombres flottants dans SSIS est plus que floue par moments.

    François JEHL
    Consultant Formateur
    MCITP/MCT Business Intelligence Development
    Winwise (Paris)
    http://fjehl.blogspot.com
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

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

Discussions similaires

  1. Exporter une table MySQL vers un fichier CSV
    Par sam01 dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2007, 17h44
  2. [ODBC] problème d'export du contenu de <textarea> vers un fichier csv
    Par maraly dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 27/04/2007, 10h14
  3. [Macro]exporter une table vers un fichier.csv
    Par samca dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2007, 22h25
  4. Réponses: 12
    Dernier message: 07/12/2005, 19h42
  5. [Oracle] export vers un fichier csv
    Par illegalsene dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/10/2005, 00h58

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