web-dev-qa-db-fra.com

Répertorie uniquement les noms de colonne d'un ensemble de données

Je travaille sur SAS sous env. UNIX et je souhaite afficher uniquement le nom de colonne d'un ensemble de données. J'ai essayé le contenu et l'impression proc, mais tous les deux énumèrent beaucoup d'autres informations irremplaçables que je ne souhaite pas car elles remplissent mon écran PuTTY et l'information est finalement perdue.

J'ai aussi essayé d'obtenir cette chose des métadonnées sas mais cela ne fonctionne pas non plus . J'ai essayé:

  2? proc sql;
  select *
 from dictionary.tables
 where libname='test' and memname='sweden_elig_file_jul';
quit;
  5?
NOTE: No rows were selected.

  6?
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.27 seconds
      cpu time            0.11 seconds
9
siso

Vous utilisez la mauvaise table de dictionnaire pour obtenir les noms de colonne ...

 proc sql; 
 sélectionnez le nom 
 de dictionary.columns 
 où memname = 'mydata' 
 ;
quitter ;

Ou en utilisant PROC CONTENTS

 proc contenu data = mydata out = meta (keep = NAME); 
courir ; 
 proc print data = meta; courir ;
20
Chris J

En voici une que j'ai utilisée auparavant pour obtenir une liste de colonnes contenant un peu plus d'informations. Vous pouvez ajouter l'option Conserver comme dans la réponse précédente. Cela montre simplement comment créer une connexion au serveur de métadonnées, au cas où cela serait utile à quiconque visionnant cet article.

libname fetchlib meta 
    library="libraryName" metaserver="metaDataServerAddress"
    password="yourPassword" port=1234
    repname="yourRepositoryName" user="yourUserName";

proc contents data=fetchlib.YouDataSetName
    memtype=DATA 
    out=outputDataSet 
    nodetails 
    noprint; 
run;
2
Scampbell

Pour une approche macro pure, essayez ce qui suit:

%macro mf_getvarlist(libds
      ,dlm=%str( )
)/*/STORE SOURCE*/;
  /* declare local vars */
  %local outvar dsid nvars x rc dlm;
  /* open dataset in macro */
  %let dsid=%sysfunc(open(&libds));

  %if &dsid %then %do;
    %let nvars=%sysfunc(attrn(&dsid,NVARS));
    %if &nvars>0 %then %do;
      /* add first dataset variable to global macro variable */
      %let outvar=%sysfunc(varname(&dsid,1));
      /* add remaining variables with supplied delimeter */
      %do x=2 %to &nvars;
        %let outvar=&outvar.&dlm%sysfunc(varname(&dsid,&x));
      %end;
    %End;
    %let rc=%sysfunc(close(&dsid));
  %end;
  %else %do;
    %put unable to open &libds (rc=&dsid);
    %let rc=%sysfunc(close(&dsid));
  %end;
  &outvar
%mend;

Usage:

%put List of Variables=%mf_getvarlist(sashelp.class);

Résultats:

Liste de variables = Nom Sexe Âge Taille Poids

source: https://github.com/Boemska/macrocore/blob/master/base/mf_getvarlist.sas

0
Allan Bowe
proc sql;
    select *
    from dictionary.tables
    where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;
0
Sri Ram