SAS Proc SQL如何仅在大表的N行上执行该过程

SAS Proc SQL如何仅在大表的N行上执行该过程,sas,proc-sql,Sas,Proc Sql,我需要在一个非常大的表的小集合(例如100行)上执行一个过程,以测试语法和输出。我已经运行以下代码一段时间了,它仍然在运行。我不知道它是否在做别的事情。或者正确的方法是什么 Proc sql inobs = 100; select Var1, sum(Var2) as VarSum from BigTable Group by Var1; Quit; 您所做的很好(将从任何表中获取的最大记录数限制为100条),但也有一些替代方案。要避免任何执行,请使用noexec选项:

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

Proc sql  inobs = 100;
select 
   Var1, 
   sum(Var2) as VarSum
from BigTable
Group by
   Var1;
Quit;
您所做的很好(将从任何表中获取的最大记录数限制为100条),但也有一些替代方案。要避免任何执行,请使用noexec选项:

proc sql noexec;
    select * from sashelp.class;
quit;
要限制特定数据集的obs,可以使用数据集obs选项,例如

proc sql;
    select * from sashelp.class(obs = 5);
quit;
为了更好地了解SAS在索引使用和查询规划方面的幕后工作,请使用_方法和_树选项(并可以选择与inob结合,如上所述):

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

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

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