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

SAS Base Discussion :

IMPORT EXCEL : Longueur de variables [DATA]


Sujet :

SAS Base

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut IMPORT EXCEL : Longueur de variables
    Bonjour,

    Je m'en remet au forum pour un problème pourtant simple, mais sur lequel je m'arrache les cheveux !!
    Je souhaite simplement importer des données depuis un fichier Excel, ce que je fais pourtant très régulièrement, mais là, rien à faire, ça bloque...
    J'ai pourtant tout essayer, sous différents formats, différentes méthodes d'import, ..... tout en sachant que je n'ai pas le module ACCES To PC Files.

    La seconde variable s'affiche avec des xxxxxE12 quand celle-ci est trop longue.

    J'ai mis le fameux fichier xls en pj.

    Merci d'avance de votre aide !!

    DATOS2.xlsx

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Je fais un ptit Up car je ne trouve toujours pas....

    Pourquoi les données :
    50114887
    76101304
    3014680041618
    3033710074365

    Sont ainsi sous SAS après l'import :
    50114887
    76101304
    301468E12
    303371E12

    Encore merci de votre aide

  3. #3
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    As-tu essayé d'importer un fichier excel 2003 au lieu d'un excel 2007-2013

    Ce code fonctionne bien chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    proc import 
    datafile="\\Vblg-sasdev\bva\BU_SERVICES\MAAF\Satisfaction Contact\export pilote quanti Maaf\Export_pilote_quanti_BA\DATOS2.xls" 
    out=_test dbms=xls replace ;
    run ;

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Merci de ta réponse.
    Mais si je ne m'abuse, il faut le module SAS/ACCES To PC Files pour utiliser une proc import avec un dlm=xls ?

    Module bien pratique, mais que je n'ai plus là où je suis désormais....

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Il suffit de rajouter un FORMAT d’affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    data test;
    format var1 32.;
    input var ;
    var1=var;
    cards;
    50114887
    76101304
    3014680041618
    3033710074365
    ;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Oui, j'ai bien essayé aussi avec ce type de code pour importer mon xls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    filename test dde 'excel|DATOS.xls ! DATOSr2c1:r1000c2' lrecl=2000;
    Mais rien n'y fait...

  7. #7
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Comme tu ne dispose pas du module SAS/ACCES To PC Files, je te propose cette solution:
    1/Enregistrer le fichier sous format csv.
    2/ Importer le nouveau fichier csv suivant cet exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    filename import "&nom_chemin\&nom_fichier.csv" ;
     
    data table; 
    	infile import dlm=";" dsd missover ;
    	informat &liste_var;
    	input &liste_var;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  8. #8
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Importer en CSV ou sous un autre format ne changera absolument rien au format d'affichage avec exponentielle des variables numériques dont la longueur est >12 positions et le problème n'a rien à voir avec Excel c'est uniquement lié à l'affichage dans SAS . De plus enregistrer en CSV implique une intervention manuelle, donc processus non automatique.


    L’utilisation de DDE permet d’automatiser le processus bien que je n’adhère pas du tout cette méthode. Enfin, pour revenir à la problématique de base ( si j’ai bien compris) il suffit juste de rajouter un format aux variables numériques comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    filename test dde 'excel|DATOS.xls ! DATOSr2c1:r1000c2' lrecl=2000;
    ;
    data test;
    format var_num1 var_num2 32. ;
       infile test;
    input …. ;
    run;
    Je ne vois pas d’autres solutions plus simples
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  9. #9
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Pour ajouter mon grain de sel, je dirai que le module access to pcfile ne sert qu'à une seule chose : voir les feuilles Excel et les fichiers CSV comme des tables natives et naviguer dedans par exemple. Pour importer, on n'en a pas besoin. Pour preuve : il suffit de faire un glisser/déposer d'un fichier dans un flux Guide pour qu'il propose directement un paramétrage de l'import. Quand on a access to pc file, on obtient directement une icone de table (il fait un import quand même, mais steack haché)...
    My 2 cents on the topic

  10. #10
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Je crois que dans GUIDE c'est un peu particulier car quand on passe par les assistants import/export c'est le moteur microsoft JET qui fait le travail et non pas SAS.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    La solution proposée par s_a_m fonctionne très bien !!

    Pour m'aider à comprendre, peut-on me confirmer que de passer au format 32. équivaut à 32 bit ?
    Car j'appliquais un format 13., ce qui ne fonctionnait pas.
    L'erreur venait-elle de là ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    filename test dde 'excel|DATOS.xls ! DATOSr2c1:r1000c2' lrecl=2000;
    ;
    data test;
    format var_num1 var_num2 32. ;
       infile test;
    input …. ;
    run;

  12. #12
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Il faut différencier la valeur d'une variable et son format d'affichage.
    En confondant les 2 on peut mal interpréter ses données.
    Médites ainsi le code ci-dessous (fais le tourner aussi, ça aide), qui affiche la même valeur avec différents formats d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test ;
        X = 12345678901234567890.123456789 ;
     
        put "format 8.   : " X 8. ;   
        put "format 16.  : " X 16. ; 
        put "format 32.  : " X 32. ;
        put "format 32.9 : " X 32.9 ;
    run ;
    Ainsi, même si la variable X a toujours la même valeur, le format d'affichage est lui plus ou moins adapté.
    Le format 32. indique qu'il affiche le nombre sur 32 caractères, tous avant la virgule.
    Le format 32.9 indique qu'il l'affiche sur 32 caractères, dont 9 après la décimale + 1 pour la décimale donc 22 avant la décimale.
    Je pense que depuis le début tu importes correctement la donnée, mais en l'affichant avec un format mal adapté, tu penses avoir une erreur d'import.

    Tout cela n'a rien à voir avec le nombre d'octets utilisés pour enregistrer la donnée.
    La place réservée pour enregistrer la donnée est définie par "length", qui pour une variable numérique vaut par défaut 8 (octets).

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Merci pour ces explications complémentaires !!
    Je vais méditer tout ça ;-)

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

Discussions similaires

  1. [XL-2003] Importer des données depuis un fichier Excel au chemin variable
    Par tarnx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/08/2010, 13h28
  2. Import Excel selon plage variable
    Par sunvialley dans le forum Access
    Réponses: 8
    Dernier message: 09/02/2007, 16h30
  3. Erreur d'import Excel -> Delphi
    Par Homer dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/07/2004, 10h07
  4. Import Excel / CSV
    Par aston_max dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 04/07/2004, 23h31
  5. import Excel --> Stringgrid de Delphi
    Par Homer dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 12h53

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