325 Views
April 03, 24
スライド概要
[第5回大阪sas勉強会]筒井杏奈
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
第5回大阪SAS勉強会 2019年5月24日 SASによるGoogle Distance Matrix APIの利用 大阪大学大学院医学系研究科保健学専攻 総合ヘルスプロモーション科学講座 数理保健学教室 筒井杏奈 1
概要 Google Distance Matrix APIの紹介 SASによるWeb APIの利用 JSONマップの利用 解析ソフト: SAS 9.4 (University Edition) 2
背景 小児がん拠点病院: 全国に15か所整備 ⇒ アクセスが大変ではないか? ⇒ 簡単に評価できないか? ⇒ Googleマップは使えないか? Web APIがある ⇒ SASで試してみよう 3
URIでデータ送信 Google Distance Matrix API Googleマップの経路探索機能のWeb API版 ユーザ登録と、APIキー取得が必要 目的地と出発地の指定により、移動の時間と距離を返す オプション設定可 https://maps.googleapis.com/maps/api /distancematrix/json?&key=API_KEY&or igins=東京駅&destinations=国立成育医 療研究センター Google Distance Matrix API 日本は公共交通機関による移動は設定不可 毎月最大40,000要素まで無料。超過分は課金 Googleマップ 返信されたデータ 4 項目数が少なく SASに 読み込みやすい
Googleマップ 5
Google Distance Matrix API URIでデータ送信 https://maps.googleapis.com/maps/api /distancematrix/json?&key=API_KEY&or igins=東京駅&destinations=国立成育医 療研究センター 返信されたデータ 項目数が少なく SASに 読み込みやすい 6
SASによる利用 (1) 基本形 (JSONの場合) https://maps.googleapis.com/maps /api/distancematrix/json?&key=API _KEY&origins=東京駅&destinations= 国立成育医療研究センター filename libref url "<URI>" debug ; libname libref json ; ただし…… 「&」がSASにマクロ変数の呼び出しと解釈され、余計なWarning ⇒ %str URIに日本語文字や半角スペースがある場合 パーセントエンコーディングが必要 ⇒ urlencode関数 例: 「東京駅」 ⇒ 「%E6%9D%B1%E4%BA%AC…」 「%XX」がSASにマクロの呼び出しと解釈され、余計なWarning ⇒ %qsysfunc 7
SASによる利用 (2) 最終形 %let _origins=%qsysfunc(urlencode(東京駅)); %let _destinations=%qsysfunc(urlencode(国立成育医療研究センター)); filename MAP_API url "https://maps.googleapis.com/maps/api/distancematrix/json?key= API_KEY%str(&)origins=&_origins%str(&)destinations=&_destinati ons" debug ; libname MAP_API json ; 8
9
ライブラリの中身 ALLDATAデータ: 複数レコードで全ての項目 他のデータ: 1レコードで一部の項目 10
まとめ SASからWeb APIを利用し、Googleマップの経路探索の結果を 取得することができた 取得したJSON形式の結果を、SASに読み込めた 必ずしも”Analysis-ready”なデータ構造でない 対処法 1. ALLDATAの転置 2. ALLDATA以外の全データの横結合 3. JSONマップの使用 JSONデータのSASデータセットへの対応付け 11
Questions? 12
JSONマップの作成 filenameステートメントを追加 libnameステートメントにオプションを追加 %let _origins=%qsysfunc(urlencode(東京駅)); %let _destinations=%qsysfunc(urlencode(国立成育医療研究センター)); filename MAP_API url "https://maps.googleapis.com/maps/api/distancematrix/json?key= API_KEY%str(&)origins=&_origins%str(&)destinations=&_destinati ons" debug ; 追加 filename JMAP "<パス>/jmap.map" ; 下線部追加 libname MAP_API json map=JMAP automap=create ; 13
SASに自動で 生成されたもの JSONマップの編集 TYPE=ORDIN ALを削除 編集後 データセット 数を1つに TABLEPATH を「/root」 に変更 それ以外の変 数の記述を1 データセット 内に移動 14
再読み込み Libnameステートメントのオプションを変更し、再読み込み (省略) libname MAP_API json map=JMAP automap=reuse ; 下線部修正 1データセットに、全ての項目が含まれた 15