SAS University Editionを使って、ATND APIからイベントのデータを取得します。
※ANTD APIについてはこちらを参照
ATND API
今回はJapan.R 2014の参加者一覧を取得してみます。
XMLのレスポンス
http://api.atnd.org/events/users/?event_id=58624
このようにイベントIDを指定すると、以下のようなXMLが返ってきます。
xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<results_returned type="integer">1</results_returned>
<results_start type="integer">1</results_start>
<events type="array">
<event>
<event_id type="integer">58624</event_id>
<title>Japan.R 2014</title>
<event_url>http://atnd.org/events/58624</event_url>
<limit type="integer">150</limit>
<accepted type="integer">150</accepted>
<waiting type="integer">47</waiting>
<updated_at type="datetime">2014-11-07 12:39:33 +0900</updated_at>
<users type="array">
<user>
<user_id type="integer">157031</user_id>
<nickname>okay0502</nickname>
<twitter_id>0kayu</twitter_id>
<status type="integer">1</status>
</user>
<user>
<user_id type="integer">132354</user_id>
<nickname>yamakatu</nickname>
<twitter_id>yamakatu</twitter_id>
<status type="integer">1</status>
</user>
(以下略)
mapファイルの作成
参加者情報はusersタグ以下にあるので、必要な項目が取得できるように定義ファイルを作成します。
atnd_users.map
<?xml version="1.0" ?>
<SXLEMAP version="1.2">
<TABLE name="users">
<TABLE-PATH syntax="XPATH">
/hash/events/event/users/user
</TABLE-PATH>
<COLUMN name="user_id">
<PATH>
/hash/events/event/users/user/user_id
</PATH>
<TYPE>numeric</TYPE>
<DATATYPE>integer</DATATYPE>
<LENGTH>8</LENGTH>
</COLUMN>
<COLUMN name="nickname">
<PATH>
/hash/events/event/users/user/nickname
</PATH>
<TYPE>character</TYPE>
<DATATYPE>string</DATATYPE>
<LENGTH>50</LENGTH>
</COLUMN>
<COLUMN name="twitter_id">
<PATH>
/hash/events/event/users/user/twitter_id
</PATH>
<TYPE>character</TYPE>
<DATATYPE>string</DATATYPE>
<LENGTH>50</LENGTH>
</COLUMN>
<COLUMN name="status">
<PATH>
/hash/events/event/users/user/status
</PATH>
<TYPE>numeric</TYPE>
<DATATYPE>integer</DATATYPE>
<LENGTH>8</LENGTH>
</COLUMN>
</TABLE>
</SXLEMAP>
SASプログラム
データ取得用のSASプログラムがこちらです。
上で作成したmapファイルはSAS University EditionのホームディレクトリであるmyfoldersにATNDディレクトリを作成し、その中に格納してあります。
atnd_api.sas
filename atnd_xml url "http://api.atnd.org/events/users/?event_id=58624";
filename atnd_map "/folders/myfolders/ATND/atnd_users.map";
libname atnd_xml xml xmlmap = atnd_map;
proc print data = atnd_xml.users;
run;
実行結果
できました。