我需要加入一個小表與Teradata DBMS中的大表很小。我選擇small.A,B,C,D 4列到宏變量,但問題是可變元將經常超過緩衝區大小。 因此,我搜索下面的代碼(http://support.sas.com/techsup/technote/ts553.html ),即通過塊運行SQL,每105條記錄。現在我有兩個問題: 1.行「文件溫度;」似乎不適合我。錯誤是: 錯誤:沒有足夠的權限訪問/x/sas/config/Lev1/SASApp/temp.dat。 2.該示例只有一列加入,而我有4列A-D加入。 有人可以幫我嗎?我感謝您的幫助!通過宏塊變量運行proc SQL
%let chunk = 105;
proc sql;
create view uniq as
select unique key
from small
order by key;
data _null_;
file temp;
set uniq end=end;
if _n_ = 1 then do;
put "create table result as"
/" select key,data"
/" from connection to dbms"
/" (select key,data"
/" from large where key in("
/key;
end;
else if mod(_n_, &chunk) = 0
and not end then do;
put "));" //;
put "insert into result"
/" select key, data"
/" from connection to dbms"
/"(select key,data"
/"from large where key in("
/key;
end;
else if end then do;
put key "));" //;
end;
else put key ",";
run;
proc sql;
connect to <DBMS> as dbms;
%inc temp;
謝謝!你的文件名聲明效果很好。對於你的問題,連接是內連接。所有4個變量都來自小表,但也存在於TD大表上並且也被索引。我試圖通過將所有4個列放在一起來創建一個列,但它需要所有4個列都是字符。當我加入(A,char30)|| B || C || D時,索引變得無效。將創建易變的表小在TD是一個很好的解決方案?記憶不會最大化嗎?性能可能會好很多?你能提供一些見解嗎? – ddss12 2014-10-06 20:13:10