API連携

TabPy経由のRESAS-API接続

本記事では、TableauのTabPyを用いたRESAS-API接続を取り上げたいと思います。

TableauとPythonの連携環境(TabPy)構築は、こちら

データ

今回はサンプル・データとして、「昼間人口・夜間人口の地域別構成割合」を用いました。

サンプル・コード

本コードでは、指定した市区町村別の「昼間人口」と「夜間人口」のデータをRESAS-API経由で取得した後に「昼夜間差分人口」を算出して、Tableauの計算フィールドにINT型で渡しています。

SCRIPT_INT('
  import json, requests

  differenceArray = [0] * len(_arg2)

  # RESAS API key
  api_key = "***"

  for i in range(len(_arg2)):
    # RESAS API endpoint
    url = "https://opendata.resas-portal.go.jp/"

    # RESAS API path
    url += "api/v1/townPlanning/commuteSchool/areaPopulationCircle?mode=2&year=2010"
    url += "&prefecture_cd=" + _arg1[i] + "&city_cd=" + _arg2[i]

    # Request Header
    head={ "Content-Type": "application/json;charset=UTF-8", "X-API-KEY": api_key }

    try:
      # Get Request
      req = requests.get(url, headers=head, timeout=1.0)
    except:
      differenceArray[i] = -1
    else:
      # Decode Response
      res = json.loads(req._content.decode("utf-8"))
      differenceArray[i] = res["result"]["noonDataSum"] - res["result"]["nightDataSum"]
    finally:
      sleep(0.2)

  return differenceArray
',
ATTR([都道府県コード]), ATTR([市区町村コード])
)
図表1:スクリプトの入力例

参考資料

関連記事一覧