<?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 more efficient way to perform merge-proc sql or data step in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892627#M352559</link>
    <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;What is more efficient way to perform merge?&lt;/P&gt;
&lt;P&gt;proc sql or data step? and why?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; /***Way1-Proc sql****/
proc sql;
create table want1 as
select a.*,b.Numerator 
from t1 as a
left join t2  as b
on a.Customer_id=b.Customer_id  and a.branch_ID=b.branch_ID
;
quit;


/***Way2-Data Step****/
proc sort data=t1;
by Customer_id branch_ID;
Run;
proc sort data=t2;
by Customer_id branch_ID;
Run;
Data want;
Retain Numerator;
Merge t1(in=a) t2(in=b);
by Customer_id branch_ID;
if a;
Run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 04 Sep 2023 20:11:31 GMT</pubDate>
    <dc:creator>Ronein</dc:creator>
    <dc:date>2023-09-04T20:11:31Z</dc:date>
    <item>
      <title>more efficient way to perform merge-proc sql or data step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892627#M352559</link>
      <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;What is more efficient way to perform merge?&lt;/P&gt;
&lt;P&gt;proc sql or data step? and why?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; /***Way1-Proc sql****/
proc sql;
create table want1 as
select a.*,b.Numerator 
from t1 as a
left join t2  as b
on a.Customer_id=b.Customer_id  and a.branch_ID=b.branch_ID
;
quit;


/***Way2-Data Step****/
proc sort data=t1;
by Customer_id branch_ID;
Run;
proc sort data=t2;
by Customer_id branch_ID;
Run;
Data want;
Retain Numerator;
Merge t1(in=a) t2(in=b);
by Customer_id branch_ID;
if a;
Run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 04 Sep 2023 20:11:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892627#M352559</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2023-09-04T20:11:31Z</dc:date>
    </item>
    <item>
      <title>Re: more efficient way to perform merge-proc sql or data step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892631#M352563</link>
      <description>&lt;P&gt;Run both steps and look at the log. You may need sufficiently large datasets to see a difference.&lt;/P&gt;
&lt;P&gt;If t2 (using only the three variables needed) can fit into memory, a single DATA step with a hash object will be most efficient:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set t1;
if _n_ = 1
then do;
  length numerator /* insert proper attribute here */;
  declare hash t2 (dataset:"t2 (keep=customer_id branch_id numerator)");
  t2.definekey("customer_id","branch_id");
  t2.definedata("numerator");
  t2.definedone();
  call missing("numerator");
end;
rc = t2.find();
drop rc;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 04 Sep 2023 20:53:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892631#M352563</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-09-04T20:53:58Z</dc:date>
    </item>
    <item>
      <title>Re: more efficient way to perform merge-proc sql or data step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892691#M352597</link>
      <description>&lt;P&gt;Let's say that t2 data set is located in permanent library r_r.&lt;/P&gt;
&lt;P&gt;so the data set name is r_r.t2&lt;/P&gt;
&lt;P&gt;does it mean that I need to write r_r.t2 in your code instead of t2?&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2023 10:31:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892691#M352597</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2023-09-05T10:31:34Z</dc:date>
    </item>
    <item>
      <title>Re: more efficient way to perform merge-proc sql or data step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892767#M352633</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159549"&gt;@Ronein&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;does it mean that I need to write r_r.t2 in your code instead of t2?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Correct.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Sep 2023 05:59:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892767#M352633</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-09-06T05:59:30Z</dc:date>
    </item>
    <item>
      <title>Re: more efficient way to perform merge-proc sql or data step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892775#M352638</link>
      <description>&lt;P&gt;&amp;lt;Pedantic mode: on&amp;gt;&lt;/P&gt;
&lt;P&gt;Any discussion of "efficient" should include a definition of what is measured and how it is used to determine efficiency. If you don't provide something to measure how do you know if something is "more efficient".&lt;/P&gt;
&lt;P&gt;&amp;lt;Pedantic mode:off&amp;gt;&lt;/P&gt;
&lt;P&gt;Programming time&lt;/P&gt;
&lt;P&gt;Program maintenance&lt;/P&gt;
&lt;P&gt;Single Run time&lt;/P&gt;
&lt;P&gt;Data storage space&lt;/P&gt;
&lt;P&gt;Network traffic&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just a few different things that might be considered in "efficient".&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2023 20:47:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/more-efficient-way-to-perform-merge-proc-sql-or-data-step/m-p/892775#M352638</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-09-05T20:47:07Z</dc:date>
    </item>
  </channel>
</rss>

