Sql 将较小的数据集与较大的数据集连接起来

Sql 将较小的数据集与较大的数据集连接起来,sql,sas,Sql,Sas,我们在SAS环境中有一个大数据集,有3000万条记录,而小数据集每个都有100000条记录 我们必须将这些较小的数据集与“大”表连接起来,将较小的数据集与较大的数据集连接起来大约需要30-40分钟 如果我们单独运行5-6个数据集的作业,则需要花费大量时间。如果我们将所有这些数据集合并到一个数据集中,然后进行左连接,与单个数据集相比,会花费更少的时间吗?另外,在工作中还有空间紧缩,所以我们也要考虑。 尝试哈希连接< /P> DATA want; IF 0 THEN SET SMALL_DATA_S

我们在SAS环境中有一个大数据集,有3000万条记录,而小数据集每个都有100000条记录

我们必须将这些较小的数据集与“大”表连接起来,将较小的数据集与较大的数据集连接起来大约需要30-40分钟

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

尝试哈希连接< /P>

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;
尝试哈希连接

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;

对于这种情况,最好的解决方案是使用modify语句,这将修改主数据集,而无需从头开始重新创建。始终记得备份您正在修改的数据集,因为如果在处理过程中出现任何错误,数据集将无法使用

这篇论文有大量的信息,但有大量的文档可以找到


Cheers

对于这种情况,最好的解决方案是使用modify语句,这将修改主数据集,而无需从头开始重新创建。始终记得备份您正在修改的数据集,因为如果在处理过程中出现任何错误,数据集将无法使用

这篇论文有大量的信息,但有大量的文档可以找到


干杯

您如何读取这些数据集?你们有SQL数据库吗?或者您执行REST API调用?@evgeny.myasishchev我们使用SAS enterprise,因此所有数据集都在SAS上。无API调用。如果您有足够的RAM(小表的大小小于RAM),理想的解决方案是SAS
哈希表
。在较小的数据集上放置索引,使用
数据步骤
,然后使用
key
@GordonLinoff进行查找我们应该合并所有表,然后创建索引,还是在单个表上创建索引,然后将它们连接起来。它会减少处理时间吗?如何读取这些数据集?你们有SQL数据库吗?或者您执行REST API调用?@evgeny.myasishchev我们使用SAS enterprise,因此所有数据集都在SAS上。无API调用。如果您有足够的RAM(小表的大小小于RAM),理想的解决方案是SAS
哈希表
。在较小的数据集上放置索引,使用
数据步骤
,然后使用
key
@GordonLinoff进行查找我们应该合并所有表,然后创建索引,还是在单个表上创建索引,然后将它们连接起来。它会减少处理时间吗?