2017-10-16 20 views
4

私は、Twitter APIから取得したJSONファイルをインポートするために、PROC GROOVYの代わりにSAS libname JSONエンジンを使用したいと思います。 OpenSUSE LEAP 42.3でSAS 9.4M4を実行しています。SAS libname JSONエンジン - Twitter API

私はTwitter APIにアクセスする方法でFalko Schulz's descriptionに従っており、何事もうまくいきました。 JSONファイルをSASにインポートしたいところまで。したがって、コードの最後の作業行は、ファイル名 "res"で参照されるファイルにjson-fileを生成します:

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; 

です。

Falko SchulzはPROC GROOVYを使用しています。しかし、SAS 9.4M4では、この謎のJSON libnameエンジンがあり、人生を楽にしています。また、単純なJSONファイルでも動作します。しかし、Twitterのデータではありません。だから、TwitterからJSONデータを

libname test JSON filref=res; 

を使用して、ダウンロードしたことは私に次のエラーを与える:私はのファイル名ステートメントを使用して

Invalid JSON in input near line 1 column 751: Some code points did not transcode.

私は何かがファイルのエンコーディングが間違っていることが疑わ形式:運のない

filename res TEMP encoding="utf-8"; 

...私もトンを増加させようとした

彼はレコード長

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

とレコード形式で遊ん...無駄に...

は、誰かが助けることができますか?私は何が欠けていますか?このエラーに遭遇せずにLIBNAMEステートメントでJSONエンジンを使用するにはどうすればよいですか?

+1

SASセッションはどのエンコーディングで実行されていますか? IE、これは何を返します: 'proc options option = encoding; run; ' – Joe

+0

ENCODING = LATIN9、お​​そらくUTF-8に変更する必要があります –

+1

はい、少なくともあなたの問題の一部です。ほとんどのSASインストール9.4以降には、UTF-8スタートアップオプションも自動的に含まれています(スタートメニューなどの別のショートカットです)。 – Joe

答えて

2

SASデータセットにUTF-8ファイルを入力する場合は、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エンコーディングではありません。

SAS 9.4以降のデスクトップには、通常は自動的にデフォルト(とにかく、英語でインストール)WLATIN1に加えでを選択したUTF-8オプションでインストールされています。スタートメニューのSAS 9.4 (Unicode Support)、またはSAS Foundationフォルダの9.4\nls\u8\サブフォルダにあるsasv9.cfgファイルを使用して見つけることができます。他の以前のバージョンでは、そのサブフォルダ/言語がインストールされていることもありますが、それをインストールするのは必ずしもデフォルトではありませんでした。

+0

誰かがSASでドキュメントを開くたびに、代わりにチャットウィンドウを開いてください。 –

+0

@RobertPenr​​idgeあなたは最近SASコミュニティフォーラムに参加していません... Reezaがそこを片手で勝つことはかなり確信しています;) – Joe

+0

ソリューションはとてもうまく動作します。しかし、デフォルトのセッションエンコーディングを変更する必要はありません。コード内からエンコードオプションを変更することはできますか? これまでのところ、ファイル名ステートメントのエンコーディングオプションを変更していました... –

関連する問題