TableauによるRESAS-API接続
本記事では、TableauのWDC(Web Data Connector)を用いたRESAS-API接続を取り上げたいと思います。
データ
今回はサンプル・データとして、「昼間人口・夜間人口の地域別構成割合」を用いました。
サンプル・コード
APIキーの設定箇所
本コードでは、コネクタ接続ページ経由(図表1参照)でAPIキーを引き渡す仕組みにしています。
RESAS APIキー:
図表1:コネクタ接続ページ
*) RESAS-APIを利用するには、APIキーが必要となります。
データ要求箇所
本コードでは、指定した都道府県の市区町村一覧を取得した後、市区町村別の「昼間人口・夜間人口の地域別構成割合」データを取得しています。
【参照API】
/*## main process block start ##*/ prefectureArray.forEach(function(data) { // prefecture loop start /*** Request start ***/ var xhr = $.ajax({ type: 'GET', url: 'https://opendata.resas-portal.go.jp/api/v1/cities?prefCode=' + data.prefectureCode, dataType: 'json', scriptCharset: 'utf-8', headers: { 'X-API-KEY': resas_api_key }, async: false }).done(function(resp) { resp.result.forEach(function(data) { cityArray.push(data); }); }).fail(function() { tableau.abortWithError('An error has occured while trying to connect to cities api.'); }); /*** Request end ***/ sleep(200); // sleep 200ms }); // prefecture loop end deferredObj.resolve(); // deferred call /*## main process block end ##*/ /*## deferred process block start ##*/ deferredObj.promise().then(function() { // deferred process start cityArray.forEach(function(data) { // city loop start /*** Request start ***/ var xhr = $.ajax({ type: 'GET', url: 'https://opendata.resas-portal.go.jp/api/v1/townPlanning/commuteSchool/areaPopulationCircle?prefecture_cd=' + data.prefCode + '&city_cd=' + data.cityCode + '&mode=2&year=2010', dataType: 'json', scriptCharset: 'utf-8', headers: { 'X-API-KEY': resas_api_key }, async: false }).done(function(resp, textStatus) { tableData.push({ "CityCode": data.cityCode, "CityName": data.cityName, "DaytimePopulation": resp.result.noonDataSum, "NighttimePopulation": resp.result.nightDataSum, "DayNightDifference": resp.result.noonDataSum - resp.result.nightDataSum, "DayNightRate": (resp.result.dayNightRate / 100).toFixed(1) }); }).fail(function() { tableau.abortWithError("An error has occured while trying to connect to area population api."); }); /*** Request end ***/ sleep(200); // sleep 200ms }); // city loop end }); // deferred process end /*## deferred process block end ##*/
見える化
以下は、API経由で取得した「昼間人口・夜間人口の地域別構成割合」データを用いて、昼夜間差分人口を見える化したサンプルとなります。
APIコール制限
本記事執筆時点では、以下のAPIコール制限(API詳細仕様参照)が設定されています。
1秒あたりのリクエスト平均数
|
リクエスト数/日
|
---|---|
5
|
10000
|