DB2 データベース (ODBC、SAS EG 4.3 を使用して接続) にある約 2000 万のアドレスを消去しようとしています。以下はサンプルコードです。このコードは長時間実行されます。それを最適化する方法はありますか?これはおそらく、データ ステップではなく、SQL ステップで試行する必要がありますか (それがより高速になるかどうかはわかりません)。
%macro addy(orig_addy,edited_addy);
*scrub original address field;
addr=upcase(&orig_addy.);
addr=(left(tranwrd(cat(' ',addr,' '),' SO. ',' S ')));
addr=compress(addr,".,()'");
addr=translate(addr, ' ', '_/-#;');
&edited_addy.=left(prxchange('s/ NORTH / N /',-1,cat(' ',addr,' ')));
&edited_addy.=left(prxchange('s/ SOUTH / S /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ EAST / E /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ WEST / W /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ NORTHWEST / NW /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ SOUTHWEST / SW /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ NORTHEAST / NE /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ SOUTHEAST / SE /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ SAINT / ST /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ / /',-1,cat(' ',upcase(&edited_addy.),' '))); *tripple spaces;
&edited_addy.=left(prxchange('s/ / /',-1,cat(' ',upcase(&edited_addy.),' '))); *double spaces;
&edited_addy.=left(prxchange('s/ & / AND /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ @ / AT /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ INTERNATIONAL / INTL /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ SUITE / STE /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ SUITES / STES /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ FLOOR | FLR / FL /',-1,cat(' ',upcase(&edited_addy.),' ')));
&edited_addy.=left(prxchange('s/ BUILDING / BLDG /',-1,cat(' ',upcase(&edited_addy.),' ')));
...
...
...
現在、これはわずか 200 万回の観測で 20 時間実行されています。ここで見たよりもはるかに多くの prxchange 条件があります。これは単なるサンプルです。