Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Table Count
- cust1 5,000
- cust2 5,555
- cust3 6,000
- %macro sqlloop(data, byvar);
- proc sql noprint;
- select &byvar.into:_values SEPARATED by '_'
- from %data.;
- quit;
- data_&values.;
- set &data;
- select (%byvar);
- %do i=1 %to %sysfunc(count(_&_values.,_));
- %let var = %sysfunc(scan(_&_values.,&i.));
- output &var.;
- %end;
- end;
- run;
- %mend;
- %sqlloop(data=libsnap, byvar=membername);
- proc sql noprint;
- select memname
- into :total_cust separated by ' '
- from sashelp.vmember
- where upcase(memname) LIKE 'CUST%'
- AND upcase(libname) = 'SNAP1';
- quit;
- %macro count_obs;
- %do i = 1 %to %sysfunc(countw(&total_cust) );
- %let dsname = %scan(&total_cust, &i);
- %let dsid=%sysfunc(open(&dsname) );
- %let nobs=%sysfunc(attrn(&dsid,nobs) );
- %let rc=%sysfunc(close(&dsid) );
- data _total_obs;
- length Member_Name $15.;
- Member_Name = "&dsname";
- Total_Obs = &nobs;
- format Total_Obs comma8.;
- run;
- proc append base=Total_Obs
- data=_total_obs;
- run;
- %end;
- proc datasets lib=work nolist;
- delete _total_obs;
- quit;
- %mend;
- %count_obs;
- data _total_obs;
- length Member_Name $7.;
- set snap1.&dsname end=eof;
- retain Member_Name "&dsname";
- if(NOT missing(var) ) then Total_Obs+1;
- if(eof);
- format Total_Obs comma8.;
- run;
- proc sql;
- select memname, nlobs
- from dictionary.tables
- where libname='SNAP1';
- quit;
- %let varname=mycol; *the column you are counting;
- %let libname=snap1;
- proc sql;
- select cats("&libname..",memname)
- into :tables separated by ' '
- from dictionary.tables
- where libname=upcase("&libname.");
- quit;
- data counts;
- set &tables. indsname=ds_name end=eof; *9.3 or later;
- retain count dataset_name;
- if _n_=1 then count=0;
- if ds_name ne lag(ds_name) and _n_ ne 1 then do;
- output;
- count=0;
- end;
- dataset_name=ds_name;
- count = count + ifn(&varname.,1,1,0); *true, false, missing; *false is 0 only;
- if eof then output;
- keep count dataset_name;
- run;
- proc sql;
- select cats('%mymacro(name=',"&libname..",memname,')')
- into :macrocalls separated by ' '
- from dictionary.tables
- where libname=upcase("&libname.");
- quit;
- ¯ocalls.;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement