<?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: Help in getting unique values in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615761#M180147</link>
    <description>My concern with a full SQL approach with self joins is that it won't scale well with a huge data set....</description>
    <pubDate>Tue, 07 Jan 2020 19:14:17 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2020-01-07T19:14:17Z</dc:date>
    <item>
      <title>Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615730#M180130</link>
      <description>&lt;P&gt;&lt;BR /&gt;I have a huge dataset. Trying something like below.&lt;/P&gt;&lt;P&gt;I have 10 customers who gets repeated in 3 months. Trying to capture the repeated customers in each month and new customers.&lt;/P&gt;&lt;P&gt;For Jan (Cust 1,cust3, cust4 repeats in other months)--- Overlap&lt;/P&gt;&lt;P&gt;For Jan( Cust 2 and cust 10 are new)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Given Dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Month Cust&lt;/P&gt;&lt;P&gt;jan cust1&lt;/P&gt;&lt;P&gt;jan cust2&lt;/P&gt;&lt;P&gt;jan cust3&lt;/P&gt;&lt;P&gt;jan cust4&lt;/P&gt;&lt;P&gt;jan cust5&lt;/P&gt;&lt;P&gt;feb cust1&lt;/P&gt;&lt;P&gt;feb cust3&lt;/P&gt;&lt;P&gt;feb cust4&lt;/P&gt;&lt;P&gt;mar cust3&lt;/P&gt;&lt;P&gt;mar cust4&lt;/P&gt;&lt;P&gt;mar cust10&lt;/P&gt;&lt;P&gt;　&lt;/P&gt;&lt;P&gt;Output want:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Month Total&amp;nbsp; Overlap&amp;nbsp; &amp;nbsp;New&lt;/P&gt;&lt;P&gt;jan&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;feb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;mar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for checking&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jan 2020 18:00:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615730#M180130</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-07T18:00:31Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615738#M180134</link>
      <description>How do you overlap with future dates? It makes sense to look backwards for overlap but how does looking forward help here? In January, you have 5 unique individuals, 3 purchased again later on but as of January they hadn't....and in March you look backwards not forwards.  &lt;BR /&gt;&lt;BR /&gt;Are you sure this is what you want?&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 07 Jan 2020 18:24:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615738#M180134</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-01-07T18:24:11Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615740#M180135</link>
      <description>Yes, since this is historical data.</description>
      <pubDate>Tue, 07 Jan 2020 18:26:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615740#M180135</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-07T18:26:06Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615742#M180137</link>
      <description>So you want to look both forward and backward in times for overlap?</description>
      <pubDate>Tue, 07 Jan 2020 18:28:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615742#M180137</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-01-07T18:28:29Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615743#M180138</link>
      <description>yes Correct.</description>
      <pubDate>Tue, 07 Jan 2020 18:29:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615743#M180138</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-07T18:29:46Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615758#M180146</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/86703"&gt;@Kalai2008&lt;/a&gt;&amp;nbsp; Pretty straight forward SQL&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
input month $ cust $;
cards;
jan cust1
jan cust2
jan cust3
jan cust4
jan cust5
feb cust1
feb cust3
feb cust4
mar cust3
mar cust4
mar cust10
;
proc sql;
create table want as
select  a.month,count(distinct b.cust) as overlap,(count(distinct a.cust)-calculated overlap) as New
from have a left join have b
on a.cust=b.cust and a.month ne b.month
group by a.month 
order by a.month;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 Jan 2020 19:03:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615758#M180146</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-01-07T19:03:24Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615761#M180147</link>
      <description>My concern with a full SQL approach with self joins is that it won't scale well with a huge data set....</description>
      <pubDate>Tue, 07 Jan 2020 19:14:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615761#M180147</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-01-07T19:14:17Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615766#M180151</link>
      <description>&lt;P&gt;I agree with you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt;&amp;nbsp;. SQL is ready meals&amp;nbsp; and convenience at least for this solution.&amp;nbsp; But since we are doing an &lt;EM&gt;equi and non equi&lt;/EM&gt;&amp;nbsp;filter in the sub-setting pattern makes the SQL optimizer choose the SORT MERGE(Magic=102)&amp;nbsp;JOIN algorithm&amp;nbsp; and optimizes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course, I am certain a more programming solution will likely give you better performance but for a long and narrow dataset, I am holding faith that this approach should suffice, though your point is well taken &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jan 2020 19:25:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615766#M180151</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-01-07T19:25:27Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615784#M180158</link>
      <description>Thank you, performance is very slow and code is still running.</description>
      <pubDate>Tue, 07 Jan 2020 20:13:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615784#M180158</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-07T20:13:35Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615799#M180165</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/86703"&gt;@Kalai2008&lt;/a&gt;&amp;nbsp;Should you have enough memory , you could try HASH&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want ;
 if _n_=1 then do;
   if 0 then set have have(rename=(month=_month));
   dcl hash H (dataset:'have(rename=(month=_month))',multidata:'y') ;
   h.definekey  ("cust") ;
   h.definedata ("_month") ;
   h.definedone () ;
 end;
 do Total=1 by 1 until(last.month);
  set have;
  by month notsorted;
  do rc=h.find() by 0 while(rc=0);
   if month ne _month then do; Overlap=sum(Overlap,1);leave;end;
   rc=h.find_next();
  end;
 end;
 New=Total-Overlap;
 drop rc _month cust;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jan 2020 21:12:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615799#M180165</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-01-07T21:12:45Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615897#M180209</link>
      <description>&lt;P&gt;Assuming the data has been sorted by month.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input month $ cust $;
cards;
jan cust1
jan cust2
jan cust3
jan cust4
jan cust5
feb cust1
feb cust3
feb cust4
mar cust3
mar cust4
mar cust10
;
proc sort data=have;by month;run;
proc sql;
create table cust as
 select distinct cust from have group by cust having count(distinct month)=1;
create table month as
 select month,count(distinct cust) as total from have group by month;
quit;

data temp;
 if _n_=1 then do;
  if 0 then set month;
  declare hash h(dataset:'cust',hashexp:20);
  h.definekey('cust');
  h.definedone();
 end;
set have;
by month;
if first.month then new=0;
if h.check()=0 then new+1;
if last.month;
keep month new;
run;

data want;
 merge month temp;
 by month ;
 overlap=total-new;
run;

&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jan 2020 12:03:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615897#M180209</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-01-08T12:03:38Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615929#M180219</link>
      <description>Thank you.</description>
      <pubDate>Wed, 08 Jan 2020 13:57:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615929#M180219</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-08T13:57:17Z</dc:date>
    </item>
    <item>
      <title>Re: Help in getting unique values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615930#M180220</link>
      <description>Awesome ....Thank you. It worked..</description>
      <pubDate>Wed, 08 Jan 2020 13:58:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-in-getting-unique-values/m-p/615930#M180220</guid>
      <dc:creator>Kalai2008</dc:creator>
      <dc:date>2020-01-08T13:58:29Z</dc:date>
    </item>
  </channel>
</rss>

