我需要加入一个小表与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