在sas中处理大型数据集

时间:2018-03-26 19:43:10

标签: sas

我正在寻找解决方案或想法如何加快sas中大型数据集的处理速度。

你会推荐什么?

什么是更好的数据步骤或proc sql程序?

3 个答案:

答案 0 :(得分:1)

加快数据处理速度取决于数据的保存位置。

您的数据可以是:

  • SAS表,
  • 数据库表(Miscrosfot SQL,Oracle,DB2,MYSQL,.. 等)

在以下情况下使用SAS数据步骤:

  • 您正在查询/处理SAS表格,
  • 你想做迭代 处理(例如保留值或使用数组)。

在以下情况下使用Proc SQL:

  • 您正在查询大型数据库表
  • 您可以执行SQL“传递”,您将发送SQL代码 在DB服务器上执行,只有输出发送到SAS(相反 通过网络将整个表格带到SAS,然后对其进行过滤),

  • 您想查询SAS表,但更喜欢SQL连接到数据步合并。

您应该考虑的另一个主题是效率规划;在哪里优化查询和查找。

答案 1 :(得分:0)

我发现Proc SQL对我的用例更好。我们可能需要更多关于您尝试加入/导出等数据的大小和种类的细节。

向我们提供一些信息,我们可以尝试提供帮助。

提示: 限制你拉动的领域 子集数据

答案 2 :(得分:0)

根据我的经验Proc SQL的传闻似乎更快。

以下是使用Proc SQL加速查询的两个提示:

通常,您希望在查询时排除尽可能多的数据。如果您使用Proc SQL,则where子句中的限制顺序很重要。首先放置最严格的部分。

例如,如果我要查询数据库中的姓氏为“JONES”且在2005年1月之后被聘用的教师,我会构建我的where子句,如下所示:where last_name = 'JONES' and hire_date > 200501我会这样做,因为最后名称可能会排除比雇用日期限制更多的记录。

如果可能,请不要使用Select *,而是列出您需要的特定列。请记住,即使您使用列进行计算,也不必在select语句中包含该列。

这是一个非常有用的资源,用于了解如何有效地使用proc sql。如果您在SAS中使用大型数据集进行大量工作,我建议您完整地阅读它。

http://www2.sas.com/proceedings/sugi29/127-29.pdf