第五章 用ODS增强你的输出结果
5.1 ODC(Output Delivery System)的概念
过程步不会产生输出,它只会产生数据,然后把数据发送给ODC,以决定输出的样式等。所以,不要考虑是否使用ODC,而考虑怎么使用。
ODC就像一家商务飞机,游客乘坐car和bus赶来,在机场确认行李、安检、最终登机,飞往目的地。Ods中,数据就想游客,通过各种过程步而来,ODS处理每一个数据集并发送到目的地。实际上,不同的ODS类型就是目的地,当达到目的地时,而数据的样式是由模板决定。
目的地 如果没有指定目的地,那么你的数据默认发往“列表listing”,这里有几种可选的目的地
LISTING 标准SAS输出
Output SAS输出数据集
Html 超文本标记语言
RTF 富文本格式
PRINTER high resolution printer output
PS 附言
PCT Printer Control Language
PDF、MARKUP、DOCUMENT
DOCUMENT目的地,允许创建一个可重复使用的输出。
风格和表模板 模板描述ODS如何制定数据格式并呈现数据。最普通的两个模板类型和是表模板类型和风格模板类型。表模板类型制定基本的输出结构,而风格模板类型制定输出将如何呈现。ODS将过程产生的数据和和表模板结合成输出对象,输出对象接着与风格模板结合,并发送到目的地,创建出输出。
可以使用template过程创建自己的风格模板,但proc template过程晦涩难懂。幸运的是,有一个最简单和最快速的方法控制修改输出,即使用内置风格模板。可用proc template语句来访问内置模板:
PROC TEMPLATE;
LIST STYLES;
RUN;
一些内置模板如下:
注意RTF和PRINTER既是目的地名又是风格名。DEFAULT是HTML的默认风格,RTF是RTF输出的默认风格,PRINTER是PRINTER的默认风格。 Print、report、TABULATE三个过程中,可以使用style=option来直接控制输出特征,而不需要创建一个新的模板。
5.2 追踪选择过程的输出
当ODS接受来自过程的的数据时,它将数据与表模板结合。对应的表模板和数据就叫做输出对象。如果使用by语句,SAS会为每一个BY组产生一个输出对象。每一个输出对象都有名字,可以用ODS TRACE语句来查找,并用ODS SELECT语句来选择。
ODS TRACE语句 ODS TRACE语句告诉SAS打印出SAS日志中输出对象的信息。这里有两个ODS TRACE的语句,一个是打开trace,一个是关闭。使用方法实例如下:
注意关闭语句要在run后面,否则在程序运行之前就关闭了trace。
例子 有关于番茄种类的数据,包括每种番茄的名字、颜色、从播种到收获的天数、典型重量:
下面代码创建了一个名为giant的数据集,并使用ODS TRACE ON和ODS TRACE off语句来追踪proc means过程。
程序运行后,日志窗口中就会有如下的追踪(由于使用了BY语句,故按照BY的组来追踪):
ODS select语句 知道输出对象的名字之后,可以用ODS SELECT语句来选择需要的输出对象。基本形式为:
Output-object-list是名字、标签、一个或更多的饿输出对象的路径。 例子 下面代码对giant运行了proc means,并用ODS SELECT语句选择了第一个输出对象,mean:
输出结果为: