2017-02-04 44 views
1

我们在SAS环境中有一个大型的数据集,其中有3000万条记录和小型数据集,每条记录有100000条记录。加入较小的数据集与大型数据集

我们必须将这些较小的数据集与“大型”表结合在一起,大型数据集加入较小的数据集需要大约30-40分钟。

如果我们单独为5-6个数据集运行作业,则花费了大量时间。如果我们将所有这些数据集合并到一个数据集中,然后进行左连接,与个人相比,它会花费更少的时间吗?另外,WORK中存在空间紧缩,所以我们也必须考虑这一点。

+0

你怎么看这些数据集?你有SQL数据库吗?或者你做REST API调用? –

+0

@ evgeny.myasishchev我们使用SAS企业,所以所有的数据集都在SAS上。没有API调用。 – rns

+2

如果你有足够数量的RAM(小表的大小小于RAM),完美的解决方案是SAS散列表。 –

回答

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; 
0

为这种情况最好的解决办法是使用修改声明,这就地修改主数据集不用从头重新创建它。请始终记住要备份的数据集是修改,因为如果在处理过程中出现任何问题,数据集将无法使用。

本文有大量的信息,但有大量的文档可以找到。

http://www.lexjansen.com/pnwsug/2006/PN01CurtisMackModify.pdf

干杯