SAS: la Limitation de variables dans la PROC EXPORT

J'ai un PROC EXPORT question que je me demande si vous pouvez répondre.

J'ai un SAS dataset avec 800+ variables et plus de 200K observations et je suis en train d'exporter un sous-ensemble des variables d'un fichier CSV (c'est à dire j'ai besoin de tous les dossiers; je ne veux pas tous les 800+ variables). Je peux toujours créer un dataset temporaire “GARDER”ing juste les champs dont j'ai besoin et exécuter l'EXPORTATION sur ce temp dataset, mais j'essaie d'éviter l'étape supplémentaire parce que j'ai un grand nombre d'enregistrements.

Pour illustrer cela, considérons un ensemble de données qui a trois variables nommées x, y et z. Mais, je veux le fichier texte généré par PROC EXPORT pour ne contenir que x et y. Ma tentative de solution ci-dessous ne fonctionne pas très bien.

Le Code SAS

Lorsque j'exécute le code suivant, je ne comprends pas exactement ce dont j'ai besoin. Si vous exécutez ce code et de regarder le fichier texte qui a été généré, il a une virgule à la fin de chaque ligne et de l'en-tête inclut toutes les variables dans le jeu de données de toute façon. Aussi, je reçois des messages dans le journal que je ne devrais pas être en train de.

data ds1;
      do x = 1 to 100;
            y = x * x;
            z = x * x * x;
            output;
      end;
run;

proc export data=ds1(keep=x y)
      file='c:\test.csv'
      dbms=csv
      replace;
quit;

Voici les premières lignes du fichier texte qui a été généré ("C:\test.csv")

x,y,z
1,1,
2,4,
3,9,
4,16,

La SAS Journal

9343  proc export data=ds1(keep=x y)
9344      file='c:\test.csv'
9345      dbms=csv
9346      replace;
9347  quit;

9348   /**********************************************************************
9349   *   PRODUCT:   SAS
9350   *   VERSION:   9.2
9351   *   CREATOR:   External File Interface
9352   *   DATE:      30JUL12
9353   *   DESC:      Generated SAS Datastep Code
9354   *   TEMPLATE SOURCE:  (None Specified.)
9355   ***********************************************************************/
9356      data _null_;
9357      %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
9358      %let _EFIREC_ = 0;     /* clear export record count macro variable */
9359      file 'c:\test.csv' delimiter=',' DSD DROPOVER lrecl=32767;
9360      if _n_ = 1 then        /* write column names or labels */
9361       do;
9362         put
9363            "x"
9364         ','
9365            "y"
9366         ','
9367            "z"
9368         ;
9369       end;
9370     set  DS1(keep=x y)   end=EFIEOD;
9371         format x best12. ;
9372         format y best12. ;
9373         format z best12. ;
9374       do;
9375         EFIOUT + 1;
9376         put x @;
9377         put y @;
9378         put z ;
9379         ;
9380       end;
9381      if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */
9382      if EFIEOD then call symputx('_EFIREC_',EFIOUT);
9383      run;

NOTE: Variable z is uninitialized.
NOTE: The file 'c:\test.csv' is:
      Filename=c:\test.csv,
      RECFM=V,LRECL=32767,File Size (bytes)=0,
      Last Modified=30Jul2012:12:05:02,
      Create Time=30Jul2012:12:05:02

NOTE: 101 records were written to the file 'c:\test.csv'.
      The minimum record length was 4.
      The maximum record length was 10.
NOTE: There were 100 observations read from the data set WORK.DS1.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.01 seconds


100 records created in c:\test.csv from DS1.


NOTE: "c:\test.csv" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           0.12 seconds
      cpu time            0.06 seconds

Des idées comment je peux résoudre ce problème? Je suis en cours d'exécution SAS 9.2 sur windows 7.

Toute aide serait appréciée. Merci.

  • Karthik
Je me rends compte que je peux utiliser des données "null; ensemble ds1; fichier 'c:\test.csv' dlm=','; mettre x y; run;" pour obtenir que cela fonctionne. PROC Export semble attrayante parce que j'ai peut-être besoin de faire de l'exportation vers un classeur excel demain à la place d'un fichier CSV et les "données de l'étape" option ne fonctionnera pas alors.
Je ne sais pas si cela fonctionne, je suis donc de poster un commentaire. Vous pouvez utiliser une vue de données pour créer le sous-ensemble de ce que vous voulez, et de les exporter? Je veux dire, vous pouvez exporter une vue de l'esprit? Je ne suis pas sûr...
Qui a travaillé comme un charme! Je vais poster ça comme la solution. Merci.
Juste une note rapide pour dire que le jeu de données d'options ne fonctionnent pas lors de l'exportation de fichiers délimités tels que csv, mais ils font un travail lors de l'exportation vers Excel.

OriginalL'auteur Karthik | 2012-07-30