[英]Merging a SAS table with a SQL passthrough
我正在嘗試將SAS表合並到SQL直通中,以幫助減少查詢SQL數據庫所需的時間。 目前,我只是按原樣使用傳遞功能,大約需要8到9個小時才能從表中提取所有內容,然后再選擇所需的內容。
目前,傳遞代碼如下所示:
proc sql;
connect to ODBC as CAW(datasrc = "CAW_ULI_STATIC");
create table test as
select aelref, aelprdtyp, aelsubtyp, aelloc, aelopndte,
hdscontrolopendate, hdscontrolclosedate, hdscontrolaction,
from connection to CAW (
select aelref, aelprdtyp, aelsubtyp, aelloc, aelextnbr, aelbrnpfx, aelitnnbr, aelopndte,
aelclddte, hdscontrolopendate, hdscontrolclosedate, hdscontrolaction
from PUBLIC_withpersonal_short.Vwhdscisagrmnt (nolock)
where HDSControlACTION <> 'D'
and aelsubtyp in (1, 2, 3, 4, 5, 10, 20, 21)
order by aelref, hdscontrolopendate, hdscontrolclosedate
);
disconnect from CAW;
;
quit;
但是我現在正嘗試使用另一個SAS數據集通過左連接縮小我從直通中獲取的內容,因此它看起來像這樣:
proc sql;
connect to ODBC as CAW(datasrc = "CAW_ULI_STATIC");
create table test as
select a.*, aelref, aelprdtyp, aelsubtyp, aelloc, aelopndte,
hdscontrolopendate, hdscontrolclosedate, hdscontrolaction,
from Import1 a left join connection to CAW (
select aelref, aelprdtyp, aelsubtyp, aelloc, aelextnbr, aelbrnpfx, aelitnnbr, aelopndte,
aelclddte, hdscontrolopendate, hdscontrolclosedate, hdscontrolaction
from PUBLIC_withpersonal_short.Vwhdscisagrmnt (nolock)
where HDSControlACTION <> 'D'
and aelsubtyp in (1, 2, 3, 4, 5, 10, 20, 21)
order by aelref, hdscontrolopendate, hdscontrolclosedate
);
disconnect from CAW b;
on a.ANUM = b.aelextnbr
;
quit;
但這似乎不喜歡在連接之前添加聯接。 這是正確的解決方法,還是我錯過了什么?
謝謝。
否。您的第二個SQL查詢只會減少寫入的記錄數,但是SAS仍需要從ODBC連接中拉出所有記錄才能執行聯接。
將您的IMPORT1 SAS數據集推入ODBC數據庫並在那里執行連接。
或者,如果記錄數足夠少,請使用宏變量來生成ANUM值列表,以將其包括在查詢中。 像這樣:
proc sql noprint ;
select ANUM into :list separated by ',' from import1;
connect .... ;
select ... from connection to odbc
(... where aelextnbr in (&list)
);
quit;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.