带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.2系统数字返回码(二)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.2系统数字返回码

&SYSCC

&SYSCC自动宏变量代表的是 SAS会话中遇到的警告或运行时错误的最大值。例如,如果遇到的运行时错误的值是10121014,那么&SYSCC会设置“1014“1012错误则会被掩盖。&SYSCC是累积的,这一点与&SYSERR截然相反。当 SAS边界步骤相互交叉时,&SYSERR会自动重置,因此,即使&SYSERR已经重写为“0&SYSCC也会显示出过去某一时刻所发生的警告或错误。&SYSCC   不能识别全部的错误,因此,经常需要结合其他返回码对它进行检查。例如,LIBNAME程序指令发生故障时,SAS日志中会出现一条提示,而 &SYSCC无法以编程方式发现这条提示,只能通过 &SYSLIBRC发现。

当运行以下代码时,LIBNAME程序指令会发生故障,因为C:\neverland目录不存在,因此,&SYSLIBRC 呈现出来的是一个负值,在后续 LIBNAME 程序指令重置&SYSLIBRC之前,该负值会一直存在 :

%letsyscc=0;

libnamelib'c:\neverland\';NOTE:LibraryLIBdoesnotexist.

 

%putSYSCC:&syscc;SYSCC:0

%putSYSLIBRC:&syslibrc;

SYSLIBRC:-70008

 

datalib.mydata;

lengthchar1$10;

run;

 

NOTE:Variablechar1isuninitialized.ERROR:LibraryLIBdoesnotexist.

NOTE: TheSASSystemstoppedprocessingthisstepbecauseoferrors.NOTE:DATAstatementused(Totalprocesstime):

realtime             0.01seconds

cputime              0.01seconds

 

%putSYSCC:&syscc;SYSCC:1012

%putSYSLIBRC:&syslibrc;

SYSLIBRC:-70008

 

由于 LIBNAME程序指令出现故障,因此,无法找到LIB.Mydata数据集,且DATA步骤会引起运行错误。尽管这是由上一个 LIBNAME程序指令故障间接造成的,但 &SYSCC在出现故障之后只能设置为一个错误代码。&SYSCC应该用于发现和处理那些不宜捕获的常见或未知错误,但需要注意的是,该代码需要与其他错误返回码结合使用。例如,如果能首先使用&SYSLIBRC值评估异常情况处理,就能够发现定义逻辑库时发生的错误,而且,通过动态执行能规避    DATA    步骤故障。

需要注意的是,&SYSCC必须初始化为0,以确保它的值不会从上一个程序运行中存留下来。由于 &SYSCC具有累积性,因此,它在SAS会话中不会自动重置。例如,某个SAS从业人员可能运行了上述代码收到1012”错误,吃完午饭之后又在同一个 SAS 会话中运行了一个不相关的程序,即使第二个程序运行顺利,但&SYSCC的值仍然会是“1012。以下代码模拟了第二个在同一会话中运行的后续不相关程序 :

datafinal;

setoriginal;run;

 

NOTE:Therewere1observationsreadfromthedatasetWORK.ORIGINAL.NOTE: The data set WORK.FINAL has 1 observations and 0 variables.NOTE:DATAstatementused(Totalprocesstime):

realtime             0.01seconds

cputime              0.00seconds

 

%putSYSCC:&syscc;

SYSCC:1012

 

由于SAS应用程序永远不会自动重置 &SYSCC,因而会出现逻辑错误,导致某个程序的错误代码继续存留并影响同一会话模式下运行的其他程序。为了克服这种持续存在性,又因为&SYSCC是一个可读写变量&SYSERR不同,因此, &SYSCC在执行和测试之前,需要重置为0。修改过的代码目前能准确反映出 DATA 步骤没有出现任何错误 :

%letSYSCC=0;

datafinal;

setoriginal;run;

 

NOTE:Therewere1observationsreadfromthedatasetWORK.ORIGINAL.

NOTE:ThedatasetWORK.FINALhas1observationsand0variables.

NOTE:DATAstatementused(Totalprocesstime):realtime   0.01seconds


 

 

 

cputime              0.00seconds

 

%putSYSCC:&syscc;

SYSCC:0

 

关于 &SYSCC,最后需要指出的一点是,由于只保留最高的错误值,因此,当出现多个错误时,数值较低的错误就会被掩盖。例如,当出现一般的错误时,&SYSCC会设置为1012。然而,如果继续执行且SAS应用程序内存已满时,&SYSCC便会被重写覆盖,设置为1016。另外,如果1016错误值出现在1012之前,那&SYSCC会设置为1016,而不会反映出1012,因为它已经被覆盖了。这同样又说明在后续进行评估之前,需要将&SYSCC重置为“0

执行最小异常情况处理的一个方法是,在程序启动之初将&SYSCC重置为0而在程序结束时测试它的值。在以下虚拟的提取 - 转换 - 加载ETL框架中,任&SYSCC>0就表明出现了警告或错误,进而需要仔细查看日志:

%letSYSCC=0;

 

%macroextract;

%mend;

 

%macrotransform;

%mend;

 

%macroload;

%mend;

 

%extract;

%transform;

%load;

 

%putSYSCC:&syscc;

 

在实际的 ETL基础结构中,&SYSCC 在程序结束时的非零值可能会使程序日志文件自动保存下来,便于开发人员能够通过浏览该文件分析任何警告或运行时错。如果没有发生任何故障,日志文件就会自动删除。&SYSCC       的一个比较稳健的操作可能是不断地重置及测试其在单个程序内的值。例如,在模块化代码中,宏一旦被调用,&SYSCC就会重置为0,它的值会在宏结束之前被评估,这一操作与上述案例是相同的,但该操作旨在模块级别重复发生时更好地分离出错误发生的位置及原因。而且,一旦识别错误,程序流程就会终止或改变方向,以避免程序因遭受连环错误而发生故障(6章会详细讲解

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
26天前
|
数据采集 机器学习/深度学习 数据可视化
构建高效数据分析系统的关键技术
【10月更文挑战第5天】构建高效数据分析系统的关键技术
36 0
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
158 4
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
110 2
|
3月前
|
数据采集 存储 监控
数据驱动开发:如何将数据分析融入开发流程
【8月更文挑战第14天】数据驱动开发是一种高效、智能的软件开发方法论,它通过将数据分析深度融入开发流程中,实现了精准决策、提升效率和持续改进的目标。为了成功实施数据驱动开发,团队需要明确数据需求、设计合理的数据架构、集成数据收集工具、实施CI/CD流程、进行数据分析与决策支持以及建立反馈循环机制。同时,还需要应对数据质量、技术和组织与文化等挑战。通过不断努力和实践,团队可以逐步建立起完善的数据驱动开发体系,推动产品不断迭代升级和业务持续增长。
|
3月前
|
存储 数据可视化 大数据
基于Python Django的大数据招聘数据分析系统,包括数据大屏和后台管理
本文介绍了一个基于Python Django框架开发的大数据招聘数据分析系统,该系统具备后台管理功能和数据大屏展示,利用大数据技术收集和分析招聘市场趋势,帮助企业和招聘机构提高招聘效率和质量。
150 3
|
3月前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
55 0
|
3月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
153 0
|
3月前
|
数据可视化 安全 前端开发
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
本文介绍了一个基于Django框架开发的美团药品数据分析与可视化系统,该系统具备多用户功能,支持数据的增删改查操作,并采用MySQL、pandas、echarts和bootstrap技术栈,为用户提供了一个高效、安全且实用的药品数据管理和分析平台。
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
|
3月前
|
数据采集 数据可视化 数据挖掘
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
本文介绍了一个基于Django框架开发的今日头条数据分析可视化系统,该系统具备后台管理、增删改查功能以及多用户登录,利用数据可视化技术为新闻媒体行业提供数据管理和决策支持。
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
|
3月前
|
数据采集 存储 数据可视化
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化
本文介绍了一个基于Python Flask框架开发的猫眼电影票房数据分析可视化系统,该系统集成了数据爬取、存储处理、可视化展示和用户交互功能,使用户能够直观地分析和展示电影票房数据,具有高度定制性。
130 0
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化