SAS Proc SQL如何仅对大表的N行执行过程

时间:2015-06-16 20:54:39

标签: sas proc-sql

我需要在一个非常大的表的小集(例如100行)上执行一个过程,以测试语法和输出。我已经运行了以下代码一段时间,它仍然在运行。我想知道它是否在做其他事情。或者正确的方法是什么?

Proc sql  inobs = 100;
select 
   Var1, 
   sum(Var2) as VarSum
from BigTable
Group by
   Var1;
Quit;

1 个答案:

答案 0 :(得分:4)

您正在做的事情很好(将从任何表中获取的最大记录数限制为100),但也有一些替代方案。要完全避免执行,请使用noexec选项:

proc sql noexec;
    select * from sashelp.class;
quit;

要限制特定数据集中的obs,您可以使用数据集obs选项,例如

proc sql;
    select * from sashelp.class(obs = 5);
quit;

为了更好地了解SAS在索引使用和查询规划方面的幕后操作,请使用_method和_tree选项(并可选择与上面的inob结合使用):

proc sql _method _tree inobs = 5;
    create table test as select * from sashelp.class
    group by sex
    having age = max(age);
quit;

这些产生了相当详细的输出,超出了本答案的范围,可以完全解释,但如果需要,您可以轻松搜索更多详细信息。

有关在SAS中调试SQL的更多详细信息,请参阅

http://support.sas.com/documentation/cdl/en/sqlproc/62086/HTML/default/viewer.htm#a001360938.htm