SAS:捕获文本文件中的特定字段
我正在编写一个SAS程序来与API交互。我试图使用SAS从API生成的文本文件中捕获特定字段 生成的文本“resp”如下所示: {“结果”:{“progressId”:“ab12”,“完成百分比”:0.0,“状态”:“inProgress”},“meta”:{“requestId”:“abcde123”,“httpStatus”:“200-OK”} 我要捕获的字段是“progressID”。在这种情况下,它将是“ab12”如果progressID的长度将发生变化,捕获此字段的最简单方法是什么 我目前的做法如下:SAS:捕获文本文件中的特定字段,sas,Sas,我正在编写一个SAS程序来与API交互。我试图使用SAS从API生成的文本文件中捕获特定字段 生成的文本“resp”如下所示: {“结果”:{“progressId”:“ab12”,“完成百分比”:0.0,“状态”:“inProgress”},“meta”:{“requestId”:“abcde123”,“httpStatus”:“200-OK”} 我要捕获的字段是“progressID”。在这种情况下,它将是“ab12”如果progressID的长度将发生变化,捕获此字段的最简单方法是什么 我
/* The following section will import the text into a SAS table,
seperated by colon. The third column would be "ab12","percentCompelte"
*/
proc import out = resp_table
datafile= resp
dbms = dlm REPLACE;
delimiter = ':';GETNAMES = NO;
run;
/* The following section will trim off the string ,"percentCompete"*/
data resp_table;
set resp_table;
Progress_ID = SUBSTR(VAR3,2,LENGTH(VAR3)-20);
run;
您有更简单/更简洁的解决方案吗
谢谢
Shawn您可以使用
JSON
库引擎读取JSON文档,并将内容复制到SAS数据集。使用引擎创建的数据项
例如:
filename myjson "c:\temp\sandbox.json";
data _null_;
file myjson;
input;
put _infile_;
datalines;
{"result":{"progressId":"ab12","percentComplete":0.0,"status":"inProgress"},"meta":{"requestId":"abcde123","httpStatus":"200 - OK"}}
run;
libname jsondoc json "c:\temp\sandbox.json";
proc copy in=jsondoc out=work;
run;
proc print data=work.Alldata;
where P1='result' and P2='progressId';
run;
您可以使用
JSON
库引擎读取JSON文档,并将内容复制到SAS数据集。使用引擎创建的数据项
例如:
filename myjson "c:\temp\sandbox.json";
data _null_;
file myjson;
input;
put _infile_;
datalines;
{"result":{"progressId":"ab12","percentComplete":0.0,"status":"inProgress"},"meta":{"requestId":"abcde123","httpStatus":"200 - OK"}}
run;
libname jsondoc json "c:\temp\sandbox.json";
proc copy in=jsondoc out=work;
run;
proc print data=work.Alldata;
where P1='result' and P2='progressId';
run;
您使用的SAS版本是什么?如果您可以访问JSON libname,那么速度会更快。否则,使用SCAN()根据分隔符解析文本,这样您就不必担心长度。正如@Reeza所说,这是一个JSON文件:,但JSON libname引擎是SasSasThank@Reeza和mjsqu最近添加的一个组件,感谢他们共享了这个惊人的方法!JSON libname解决了我的问题!您使用的SAS版本是什么?如果您可以访问JSON libname,那么速度会更快。否则,使用SCAN()根据分隔符解析文本,这样您就不必担心长度。正如@Reeza所说,这是一个JSON文件:,但JSON libname引擎是SasSasThank@Reeza和mjsqu最近添加的一个组件,感谢他们共享了这个惊人的方法!JSON libname解决了我的问题!