Hello, I found a real good macro here once that split a huge dataset (500K) records into equal portions of 30,000 and it was so simple, but now I can't find it. I would like to split a file only 34K records by account number into equal records of 500 records. I know I know its about 64 datasets, however that is all the other end can handle.
thank you.
I don't have anything to attach as I am looking for the example I had previously.
Splitting files is relatively trivial if you have clear rules.
You say account number and 500 records? Does that mean each file is for a single account and maximum 500 records? Or can a file of 500 records have multiple accounts?
What is the final output format, Excel, csv, sas7bdat data set?
Split it by grouping variable:
http://blogs.sas.com/content/sasdummy/2015/01/26/how-to-split-one-data-set-into-many/
By amount
https://communities.sas.com/t5/Base-SAS-Programming/split-file-into-multiple-files/td-p/56457
If your final output is a text file use file options, see example 4&5 here
To be honest, unless there is a clear reason (maybe file transmittal can only old a certain amount) then its not a good idea to split data. It just means you end up with lots of segments to program on.
Its is trvial however to do:
data _null_; set your_data nobs=n; do i=1 to (n/500); call execute('data temp; set your_data point='||put(i-1*500)||' obs=500; run;'); call execute('proc export data=temp outfile="<path to file>\File'||strip(put(i,best.))||'.xls"; run;'); end; run;
Do note, not tested, but something like that should work.
If your doing a data transfer then best to use an appropriate format, CSV, XML, etc.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.