5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Qiita APIから取得したJsonをPower BIに読み込ませる

Last updated at Posted at 2021-10-14

Qiita API を使って記事を取得し、記事をAPIで取得してJSON形式で出力。
そのファイルをPower BI というMicrosoftのBIツールにインポートして分析してみました。
なお、今回はQiitaのトップコントリビューターの10名の神々を対象に実行しています。

image.png

利用したもの

API

  • API Qiita API v2

実行環境

  • Windows 10 Home
  • Node.js
  • axios

BIツール

Power BI Desktop

書いたコード


//ライブラリの読み込み
const axios = require('axios'); //APIをたたくaxios
const fs    = require("fs");    //標準出力のfs

// 文字コード
const charset = 'utf8';        //出力ファイルの文字コード
const result = './Result/';    //出力先のフォルダ
var response;                 //GETの受け皿
var jsonArray = new Array();
var i = 0;

//神々
const Gods = [
    "jnchito",
    "rana_kualu",
    "hirokidaichi",
    "suin",
    "drken",
    "icoxfog417",
    "baby-degu",
    "Yametaro",
    "mpyw",
    "opengl-8080"
];

//メイン処理
async function main() {

   //forをネストするのも手間だし、1人あたり3回たたけば全件取得できるので、ヨシッ!!
    for(let userId of Gods){
        //page1
        response = await axios.get(
            'https://qiita.com/api/v2/users/'+ userId +'/items?page=1&per_page=100'
        );
        jsonArray.push(response);

        //page2
        response = await axios.get(
            'https://qiita.com/api/v2/users/'+ userId +'/items?page=2&per_page=100'
        );
        jsonArray.push(response);
        
        //page3
        response = await axios.get(
            'https://qiita.com/api/v2/users/'+ userId +'/items?page=3&per_page=100'
        );
        jsonArray.push(response);
    }

    //json形式でファイル出力!!
    for(let res of jsonArray){
        fs.writeFile(result + i +".json" , JSON.stringify(res.data, null, " "), charset, (err, data) => {
            if(err) console.log(err);
            else console.log('write end');
            }
        );
        i++; 
    }
}

//メイン実行
main();

結果

json形式での出力はしっかりできました
image.png

####ツリーマップ
image.png
きれいだなぁ。。。(棒)

散布図と回帰直線

image.png

コメントとLGTMとの間の相関は強くはなさそう?

躓きポイント

短いコードながらJavaScript初心者の私には難しいポイントがいくつかありました。

1. 型推論

Javascirptの型推論に悪戦苦闘。便利なようで使いこなすには時間がかかりそうです。
axios.get()の戻り値の型がわからず、メソッドをうまく呼び出せませんでした。
Typeof()で調べて公式リファレンスと小一時間ほど格闘しました。

2. Itterable

いてらぶる....。「反復可能」と訳すようです。Google大先生にご教授いただきました。
要は配列っぽいオブジェクトのことですよね。
配列ではないものをfor...of文に渡そうとしてTypeErrorが発生してしまいました。

javascriptの組み込み型では、String, Array, TypedArray, Map, Setが該当するそうです。

3. 標準出力

Power BI やその他のツールに連携するためにも、やはりファイルへの書き出しはマスターしておきたいところ。
しかし、fn.writefile()メソッドの使い方から始まり、文字コード、Json形式...と調べることはてんこ盛りでした。

4.Power BI に複数のファイルを取り込む

Power BI は、SQLやExecelファイルなど多くのデータソースを取り込むことができます。
しかし、複数のファイルの一括で読み込むには工夫が必要です。

終わりに

今回はJavaScriptを学習したアウトプットとして、Qiita APIを利用したデータの取得と分析にチャレンジしてみました。
分析はイマイチですが、「APIで情報を取得し分析の準備を整える」まではできたのでご容赦ください。

また、Power BIは基本的に無料で提供されています。
使いきれないほどの豊富な機能が備わっていて、なおかつ無料ですのでぜひ触ってみてください。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?