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
|