如何用ODS TRACE识别PROC CONTENTS输出对象并解决数据集生成不符问题
解决PROC CONTENTS输出数据集不符合预期的问题
步骤1:用ODS TRACE确认目标输出对象
要定位包含变量名称、类型、长度、格式及输入格式的输出对象,先开启ODS TRACE查看日志里的输出对象信息:
ods trace on; proc contents data=mylib.hotel1; run; ods trace off;
执行后日志会列出PROC CONTENTS生成的所有输出对象,其中包含变量详情的对象名称为Variables,日志示例如下:
Output Added:
Name: Variables
Label: Variables
Template: Base.Contents.Variables
Path: Contents.DataSet.Variables
步骤2:修正代码捕获目标对象到数据集
你之前的代码混淆了proc contents的out=参数与ODS输出对象的用法:out=生成的是PROC CONTENTS默认的元数据汇总数据集,结构和ODS输出的Variables表格不一致。正确做法是用ods output语句直接捕获Variables对象到数据集:
ods output Variables=work.h1; proc contents data=mylib.hotel1; run; ods output close;
执行后,work.h1数据集会包含变量名称(Name)、类型(Type)、长度(Length)、格式(Format)、输入格式(Informat)等你需要的字段,和ODS输出的Variables表格内容完全匹配。
内容的提问来源于stack exchange,提问作者ShaneH
相关产品推荐
相关产品推荐

