<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Split dataset using Macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697194#M213050</link>
    <description>&lt;P&gt;&lt;STRONG&gt;Hi,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've business requirement to split multiple datasets based on the product codes which is input to another team, so thought of using macro to split datasets but seems not working. Can u please correct me with the code?&lt;/P&gt;</description>
    <pubDate>Fri, 06 Nov 2020 16:44:51 GMT</pubDate>
    <dc:creator>AshokD</dc:creator>
    <dc:date>2020-11-06T16:44:51Z</dc:date>
    <item>
      <title>Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697190#M213047</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to split dataset using product id , but seems it's not working. Can someone have a look and correct me please?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data sample;&lt;BR /&gt;input custid prdid prdname $30.;&lt;BR /&gt;cards;&lt;BR /&gt;222 10 aaaa&lt;BR /&gt;333 20 bbbb&lt;BR /&gt;444 10 aaaa&lt;BR /&gt;444 20 bbbb&lt;BR /&gt;555 30 cccc&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;set sample end=last;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If last then call symputx("n",_n_);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%PUT&amp;nbsp; &amp;amp;n.;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%macro split(dsn=);&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;select prdid into :xx from &amp;amp;dsn.;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;data &amp;amp;dsn.&amp;amp;i.;&lt;BR /&gt;set &amp;amp;dsn.;&lt;BR /&gt;where prdid = &amp;amp;xx.;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend split;&lt;BR /&gt;%split(dsn=sample);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 16:34:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697190#M213047</guid>
      <dc:creator>AshokD</dc:creator>
      <dc:date>2020-11-06T16:34:19Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697192#M213049</link>
      <description>&lt;P&gt;Why?&lt;/P&gt;
&lt;P&gt;What can you do with multiple data sets that you can't do with one?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Typically "splitting" data this way adds more complication than any benefit and often means that some one does not understand what is possible with SAS BY group processing.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 16:38:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697192#M213049</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2020-11-06T16:38:22Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697194#M213050</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Hi,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've business requirement to split multiple datasets based on the product codes which is input to another team, so thought of using macro to split datasets but seems not working. Can u please correct me with the code?&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 16:44:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697194#M213050</guid>
      <dc:creator>AshokD</dc:creator>
      <dc:date>2020-11-06T16:44:51Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697197#M213051</link>
      <description>You don't show where/how you create the macro variable &amp;amp;xx? Where is that happening?&lt;BR /&gt;where prdid = &amp;amp;xx.;&lt;BR /&gt;&lt;BR /&gt;Other methods are illustrated here:&lt;BR /&gt;&lt;A href="https://blogs.sas.com/content/sasdummy/2015/01/26/how-to-split-one-data-set-into-many/" target="_blank"&gt;https://blogs.sas.com/content/sasdummy/2015/01/26/how-to-split-one-data-set-into-many/&lt;/A&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 06 Nov 2020 16:49:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697197#M213051</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-11-06T16:49:55Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697201#M213052</link>
      <description>&lt;P&gt;Do those other teams actually get SAS datasets, or do they need the data in some other form?&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 16:56:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697201#M213052</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-11-06T16:56:54Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697203#M213053</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yeah, they need SAS datasets.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 17:01:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697203#M213053</guid>
      <dc:creator>AshokD</dc:creator>
      <dc:date>2020-11-06T17:01:53Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697217#M213056</link>
      <description>&lt;P&gt;Your logic is a little confused. You don't care how large the original dataset is, just how many datasets you need to create.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro split(dsn=);
  %if not %symexist(nds) %then %global nds;
  %local xx i;

proc sql noprint;
select prdid into :xx separated by ' ' from &amp;amp;dsn.;
%let nds=&amp;amp;sqlobs;
run;

%do i = 1 %to &amp;amp;nds;
data &amp;amp;dsn.&amp;amp;i.;
  set &amp;amp;dsn.;
  where prdid = %scan(&amp;amp;xx.,&amp;amp;i,%str( ));
run;
%end;
%mend split;
%split(dsn=sample);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If your PRDID variable is character (why would you use a &lt;STRONG&gt;numeric&lt;/STRONG&gt; variable for an ID?) then add quotes into the macro variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select quote(trim(prdid),"'") into :xx separated by ' ' from &amp;amp;dsn.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note unless your source dataset is indexed on the split variable it is probably faster to make them all in the same data step.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data
%do i = 1 %to &amp;amp;nds;
  &amp;amp;dsn.&amp;amp;i.
%end;
;
  set &amp;amp;dsn.;
%do i = 1 %to &amp;amp;nds;
  if prdid = %scan(&amp;amp;xx.,&amp;amp;i,%str( )) then output &amp;amp;dsn.&amp;amp;i;
%end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 06 Nov 2020 18:00:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697217#M213056</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-11-06T18:00:17Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697220#M213059</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&lt;/P&gt;&lt;P&gt;It works now, You've saved me.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 18:10:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697220#M213059</guid>
      <dc:creator>AshokD</dc:creator>
      <dc:date>2020-11-06T18:10:46Z</dc:date>
    </item>
    <item>
      <title>Re: Split dataset using Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697221#M213060</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/56202"&gt;@AshokD&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yeah, they need SAS datasets.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Unless there are supposed to be restrictions of data for security or similar issues I would suggest placing the "big" data set in a shared storage location and let the users select data based on a Where statement as needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If your data changes frequently then you can cause availability due to timing of code execution issues with this split data set approach.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Nov 2020 18:13:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-dataset-using-Macro/m-p/697221#M213060</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2020-11-06T18:13:53Z</dc:date>
    </item>
  </channel>
</rss>

