SAS libname JSON引擎-Twitter API



(1)

如果要将UTF-8文件输入到SAS数据集,请以UTF-8模式运行SAS会话。 虽然可以在另一种模式下运行SAS,但仍然可以在某种程度上读取UTF-8编码的文件,但通常会遇到很多困难。

你可以通过下面的代码告诉你的会话是什么编码:

proc options option=encoding;
run;

如果它返回这个:

 ENCODING=WLATIN1  Specifies the default character-set encoding for the SAS session.

那么你没有使用UTF-8编码。

除了默认的WLATIN1(以英语安装) 之外 ,桌面上的SAS 9.4及更高版本通常还安装有自动选择的UTF-8选项。 您可以在SAS 9.4 (Unicode Support)下的开始菜单中找到它,或者使用SAS Foundation文件夹的9.4\nls\u8\子文件夹中的sasv9.cfg文件。 其他早期版本也可能安装了该子文件夹/语言,但并不总是默认安装它。

我想使用SAS libname JSON引擎而不是PROC GROOVY来导入从Twitter API获得的JSON文件。 我在OpenSuse LEAP 42.3上运行SAS 9.4M4。

我遵循Falko Schulz关于如何访问Twitter API 的描述 ,并且效果很好。 直到我想将JSON文件导入到SAS的时候。 所以最后一行代码是:

proc http method="get"
out=res headerin=hdrin
url="https://api.twitter.com/1.1/search/tweets.json?q=&TWEET_QUERY.%nrstr(&)count=1"
ct="application/x-www-form-urlencoded;charset=UTF-8";
run;

这会在文件名为“res”的文件中产生一个json文件。

Falko Schulz使用PROC GROOVY。 然而,在SAS 9.4M4中,有这个神秘的JSON libname引擎,使生活更轻松。 它适用于简单的JSON文件。 但不是Twitter的数据。 所以从Twitter下载JSON数据,使用

libname test JSON filref=res;

给我以下错误:

输入附近的第1列751中的JSON无效:有些代码点没有转码。

我怀疑文件的编码有问题,所以我使用了一个表单的文件名:

filename res TEMP encoding="utf-8";

没有运气...

我也试图增加记录长度

filename res TEMP encoding="utf-8" lrecl=1000000;

并与记录格式玩...无济于事...

有人可以帮忙吗? 我错过了什么? 如何在LIBNAME语句中使用JSON引擎而不会遇到此错误?





sas