我们在SAS环境中拥有一个拥有3000万条记录的大型数据集,每个小型数据集都有10万条记录。
我们必须将这些较小的数据集与“大”表连接起来,并且大型数据集加入较小的数据集需要大约30-40分钟。
如果我们单独运行5-6个数据集的工作,则需要花费很多时间。如果我们将所有这些数据集合并到一个数据集中,然后进行左连接,那么与单个数据集相比,它会花费更少的时间吗?另外,WORK中存在空间紧缩,因此我们也必须考虑这一点。
答案 0 :(得分:0)
尝试散列连接
DATA want;
IF 0 THEN SET SMALL_DATA_SET;
if _N_ = 1 then do;
declare hash HASH_NAME(dataset:"SMALL_DATA_SET", multidata:'y');
HASH_NAME.defineKEY("YOUR_KEY_VARIABLE");
HASH_NAME.defineData (ALL:'YES');
HASH_NAME.defineDone();
END;
set BIG_DATA_SET;
IF
HASH_NAME.FIND(KEY:YOUR_KEY_VARIABLE) = 0 THEN OUTPUT;
RUN;
答案 1 :(得分:0)
此类场景的最佳解决方案是使用修改语句,这会修改主数据集,而无需从头开始重新创建。永远记住要备份修改的数据集,因为如果在处理数据集期间出现任何问题,将无法使用。
这篇论文有很多信息,但是有很多文档可以找到。
http://www.lexjansen.com/pnwsug/2006/PN01CurtisMackModify.pdf
干杯