SAS中文论坛

标题: 用ODS PACKAGE语句创建ZIP文件 [打印本页]

作者: shiyiming    时间: 2014-4-4 17:32
标题: 用ODS PACKAGE语句创建ZIP文件
SAS分析员天天在与大数据打交道,所以不可避免会产生大量报表与文件。不少SAS程序员询问可不可以用ZIP文件把输出的多个文件打包?那我们今天就来介绍下如何用SAS ODS PACKAGE语句把文件与报表用ZIP来打包。

首先我们先创建一个文件夹与ZIP文件carstats.zip。
  1. %let projectDir = c:\projects\sgf2013\filenamezip;

  2. /* Clean slate! */
  3. filename newfile "&projectDir./carstats.zip";
  4. data _null_;
  5.   if (fexist('newfile')) then
  6.       rc = fdelete('newfile');
  7. run;
  8. filename newfile clear;

  9. /* Create folder if it doesn't exist */
  10. options dlcreatedir;
  11. libname out "&projectDir./data";
复制代码

其次,我们把想要输出的文件用ODS语句生成。此例中,我们生成一个pct.csv和一个readme.rtf文件。
  1. /* Create some data */
  2. filename newcsv "&projectDir./data/pct.csv";
  3. proc means noprint data=sashelp.cars;
  4. var msrp;
  5. output out=out.pct median=p50 p95=p95 p99=p99;
  6. run;
  7. ods csv file=newcsv;
  8. proc print data=out.pct;
  9. format _all_; /* clear the formats */
  10. run;
  11. ods csv close;

  12. /* Create an informative document about this package */
  13. filename rm "&projectDir./readme.rtf";
  14. ods rtf(readme)
  15.   file="&projectDir./readme.rtf" style=Printer;
  16. ods rtf(readme)
  17.   text="These are some instructions for what to do next";
  18. proc datasets lib=out nolist;
  19. contents data=pct;
  20. quit;
  21. ods rtf(readme) close;
复制代码

接下去就是见证奇迹的关键步骤,我们需要用ODS PACKAGE语句把pct.csv和readme.rtf添加到carstats.zip里去。
  1. /* Creating a ZIP file with ODS PACKAGE */
  2. ods package(newzip) open nopf;
  3. ods package(newzip) add file=newcsv path="data/";
  4. ods package(newzip) add file=rm;
  5. ods package(newzip) publish archive
  6.   properties(
  7.    archive_name="carstats.zip"
  8.    archive_path="&projectDir."
  9.   );
  10. ods package(newzip) close;
复制代码

最后我们打开carstats.zip文件看看结果,果然pct.csv和readme.rtf都已经在里面了。成功!耶!


如果你自己再加一段发送带ZIP附件的email的SAS程序就可以做到全自动化报表生成打包发送了。


作者: henryyhl    时间: 2014-4-4 20:54
谢谢楼主的分享,实际工作中挺有用的。谢谢。




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2