我只是在学习sas,并看到了两个有趣的程序。
proc Delete data = table; run;和
proc datasets lib=Libr nolist;
modify table;
rename __first = second;
quit;
run;关于他们的几个问题:
quit而不是run那样结束datasets同时使用quit和run?(这是要退出表的语句吗?)datasets-procedure是最好的建议吗?(当然,不是为了什么?还是不使用?)proc delete还是sql-drop?(其速度更快,所需数据量也更大)发布于 2012-04-17 15:37:13
SAS过程以QUIT而不是RUN结束,因为它们在Interactive Mode中运行。例如,在PROC GLM中,只要SAS窗口的顶部显示PROC GLM正在运行(如果使用的是Windows版本),就可以指定一个额外的模型语句。QUIT和RUN的习惯。我认为这实际上并不重要,因为使用QUIT语句的过程一输入它们就开始运行。我只用其中一种。PROC DELETE是一个不受支持的遗留特性;它已经被PROC DATASETS正式取代,后者是用于处理SAS中数据集的指定工具。邮寄名单邮政。在SAS中,我通常不需要删除数据集。因为SAS有效地管理了它的内存使用,而且由于现在内存非常丰富,所以我通常从临时数据集中完成90%的工作,这些数据集是我在会话开始时按需创建的。
PROC DELETE而支持PROC DATASETS。如果不包括非常大的数据,就更快的数据而言,我敢打赌,两者之间没有什么区别。然而,在处理永久SAS数据集时,我喜欢使用PROC DATASETS而不是PROC SQL,因为我觉得使用SAS设计的方法操作永久数据集更好,而不是使用PROC SQL实现(在我看来不是100%)。发布于 2012-04-18 19:28:36
WRT“运行”与“退出”:
有些SAS过程支持所谓的“运行组处理”,这意味着当看到"run;“语句时,该过程执行它所要求的任何工作。该过程继续执行,直到它看到一个“退出:”状态网。事实上,如果还有工作要做,一个“退出;”语句将自动插入一个"run;“语句。
PROC数据集就是其中之一。“退出”声明说,该程序没有更多的工作要做。考虑一下这个微不足道的例子:
proc datasets;
change a=new_a;
run;
delete new_a;
run;
quit;第一个语句(更改)将现有数据集的名称"a“重命名为"new_a”。第二条语句将删除该数据集。如果在本例中没有包含"run;“语句(在”更改“之后),该过程将失败,因为它会注意到"new_a”数据集不存在,因此不会执行任何一条语句。
也就是说,我自己很少使用PROC数据集;我更喜欢使用PROC SQL。
WRT: PROC DELETE与PROC SQL的DROP表:
虽然PROC删除正式被“反对”,但这意味着它将不再被更改。从SAS库中删除数据对象是一个简单的过程;我一直在使用它。与PROC相比,它有一个特殊的优势。如果使用PROC DELETE尝试删除不存在的数据集,则只会在日志中收到警告消息。但是,如果您尝试SQL中的DROP语句,您将得到一个错误,您的SQL步骤将停止。在我的ETL脚本中创建新表时,我一直使用PROC DELETE,这些表加载到外部数据库(如)中。
长篇大论,我知道,但我希望这能帮上忙。
鲍勃
发布于 2012-04-18 00:33:06
关于数据集还是sql在删除表方面是否更快,我研究了一下这个问题,即这里。Proc SQL通常跑得更快,这让我感到惊讶。
https://stackoverflow.com/questions/10193412
复制相似问题