API連携

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

参考資料

関連記事一覧