it-swarm.com.de

Listet nur die Spaltennamen einer Datenmenge auf

Ich arbeite an SAS in UNIX-Umgebung und möchte nur den Spaltennamen einer Datenmenge anzeigen. Ich habe Proc-Inhalt und Proc-Druck ausprobiert, aber beide listen viele andere irrevelante Informationen auf, die ich nicht möchte, da sie meinen PuTTY-Bildschirm füllen und die Informationen letztendlich verloren gehen.

Ich habe auch versucht, dieses Ding aus den sas-Metadaten zu bekommen, aber das funktioniert auch nicht ... Ich versuchte es:

  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

Sie verwenden die falsche Wörterbuch-Tabelle, um Spaltennamen zu erhalten ...

 proc sql; 
 Wählen Sie den Namen 
 aus wörterbuchspalten 
 Dabei ist memname = 'mydata' 
 ;
Verlassen ;

Oder mit PROC INHALT

 proc Inhalt data = mydata out = meta (keep = NAME); 
Lauf ; 
 proc Druckdaten = Meta; Lauf ;
20
Chris J

Hier ist eine, die ich zuvor verwendet habe, um eine Liste mit Spalten mit ein wenig mehr Informationen zu erhalten. Sie können die Keep-Option wie in der vorherigen Antwort hinzufügen. Hier wird nur gezeigt, wie Sie eine Verbindung zum Metadatenserver herstellen, falls dies für jeden hilfreich ist, der diesen Beitrag betrachtet.

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

Versuchen Sie Folgendes, um einen reinen Makroansatz zu erhalten:

%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;

Verwendungszweck:

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

Kehrt zurück:

Liste der Variablen = Name Geschlecht Alter Größe Gewicht

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