在SAS环境中,我们有一个拥有3000万条记录的大型数据集和一个拥有100000条记录的小型数据集。
我们必须将这些较小的数据集与“大”表连接在一起,这需要大约30-40分钟的时间来连接较小的数据集与大型数据集。
如果我们单独运行5-6个数据集的作业,则需要花费大量时间。如果我们将所有这些数据集合并到单个数据集,然后进行左连接,与单个数据集相比,是否需要更少的时间?此外,在工作中有空间紧缩,所以我们也必须考虑这一点。
发布于 2017-02-06 05:18:29
尝试哈希连接
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;
发布于 2017-02-15 22:27:42
这种情况的最佳解决方案是使用modify语句,这将在适当的位置修改主数据集,而无需从头开始重新创建它。始终记住要备份您正在修改的数据集,因为如果在处理过程中出现任何错误,数据集将不可用。
这篇论文有大量的信息,但也有大量的文档可供查找。
http://www.lexjansen.com/pnwsug/2006/PN01CurtisMackModify.pdf
干杯
https://stackoverflow.com/questions/42037191
复制相似问题