join - 在 SAS 中加入两个数据集的替代方法

标签 join sas

我有两个数据集 DS1DS2DS1 是 100,000 行 x 40 列,DS2 是 20,000 行 x 20 列。如果某些字段匹配 DS2,我实际上需要从 DS1 中提取 COL1。 由于我对 SAS 非常陌生,所以我试图坚持使用 SQL 逻辑。

所以基本上我做了(拍摄版)

proc sql;
...
SELECT DS1.col1 
FROM DS1 INNER JOIN DS2 
on DS1.COL2=DS2.COL3 
OR DS1.COL3=DS2.COL3 
OR DS1.COL4=DS2.COL2
...

大约一个小时后,它仍在运行,但我收到来自 SAS 的电子邮件,说我正在使用 700gb 左右。是否有更好更快的 SAS 方式来执行此操作?

最佳答案

我会使用 3 个单独的查询并使用 UNION

proc sql;
...
SELECT DS1.col1 
FROM DS1 INNER JOIN DS2 
on DS1.COL2=DS2.COL3 

UNION

SELECT DS1.col1 
FROM DS1 INNER JOIN DS2 
On DS1.COL3=DS2.COL3 

UNION

SELECT DS1.col1 
FROM DS1 INNER JOIN DS2 
ON DS1.COL4=DS2.COL2
...

关于join - 在 SAS 中加入两个数据集的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28902419/

相关文章:

php - 为内部联接查询中的一个字段选择不同的值

node.js - 加入两个以上的表在 Sequelize 中不起作用

sas - PROC CATALOG 可能的 'entry-types' 是什么?

sas - 我正在尝试将 SFTP 文件(SAS 数据集或 token )从一台服务器传输到 SAS 中的另一台服务器

distribution - SAS中的数据堆叠

r - 基于字符串模糊匹配的连接数据框

mysql - 使用 MAX 函数连接 3 个表

mysql - 由于锁定,SQL 插入从一台服务器失败而在另一台服务器上正常工作

python - 如何创建到 SAS 的 ODBC 连接?

search - 你如何在 SAS 中返回包含目标值的库中所有表中所有列的列表?