fitbitのデータを可視化してみる

どうもsusumu_tanakaです。
今年のアドベンティストカレンダーは前半2つ管理系のネタを書いてしまったので、
同じ流れで、セルフサービスBI周りの話でもしようかなと思いましたが、
内容的に変えたほうがいいかと思うので、一旦セルフサービスBIネタは封印します。
また、どこかの機会で書こうかなと思います。
（どんなレポート作成しているとか、公開できればいいのですがね。。さすがに厳しいかな。）

■セルフサービスBI管理ツール①②
https://qiita.com/susumutanaka/items/8d9e1232a7eea5af1c62
https://qiita.com/susumutanaka/items/830e3434b3e45355c860

じゃぁ、何を書こうかなと、ふと考えたのですが、
今年購入した「fitbit sense」のデータでも可視化してみます。

#fitbitデータについて

２種類あるようです。

　・個人マイページからのダウンロード
　・APIによるデータ取得

今回は前者の「個人マイページからのダウンロード」で行きましょう！
※APIちょいと調べてみたのですが、登録にURLだの色々と厄介そうだったので・・

まずは、ダッシュボードの「データのエクスポート」画面に行きましょう

■データのエクスポート
https://www.fitbit.com/settings/data/export
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/2a282ff4-bc63-6250-cc65-f06882cad243.png)

この画面の「ダウンロード」ボタンからだと、
あまりよい情報が得られないので、『データをリクエスト』からデータを取得しましょう。
※詳細データ、ストレスの情報とかも入っているので、こっちがオススメ！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/7b14e34f-100c-2337-871f-c6ea3fd155d4.png)

データをリクエストして、数分後、ダウンロードができる状態になるので、
そこから、圧縮ファイルを回答すると、こんなフォルダ構成になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/0e720ed1-5d87-b094-4e9a-ab1ed361ac21.png)

#ストレスデータの可視化
とりあえず、ストレススコアでも可視化してみますかー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/9d1bda43-6801-d780-91c4-4f4637b81547.png)

fitbit の現在の最上位モデルの「sense」では、ストレスをスコア化してくれてます。
　ストレススコア定義自体は、
　①脈拍などの「反応スコア」30point
　②運動活動の「運動バランススコア」40point
　③睡眠パターンスコア 30point
に分類されるようです。

参考ページ：
https://help.fitbit.com/articles/ja/Help_article/2077.htm

とりあえず、ストレスデータを読み込んでみますかー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/762b994f-f346-828f-5f97-54b1d9700fed.png)

データ読み込んで、Power Queryで表示するとこんな感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/408c1a38-1836-bdbe-7d0b-434a5e00c169.png)

MAX値とか、不要な列は削除。
ラベル表が分かりづらいので、日本語名に変更っと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/0eaa422b-a62d-77a6-6a8a-63132398e1d6.png)

ステータスにNO_DATAってありますが、10/4発売日だので、データ的にはないです。
また、睡眠スコアがあるので、Senseを外してうっかり寢っちゃったときにはスコアが取れないようです。


あと、
カレンダーマスタは欠かせないっすよね。
y-komuroさんの永久保存版のカレンダーマスタのページを参考に追加！
https://qiita.com/y-komuro/items/de3e2cb3dea129260079
（y-komuroさん元気かな、FBにもいないし、元気してるかな。）


日付テーブルも入れて、２つのデータでレポート作成してみましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/1ddc14d5-3ade-b295-993a-e1f31ba971f6.png)

とりあえずは、日付同士をくっつけて、最低限のモデルでこんな感じでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/0360856d-5147-61b5-3b05-b13f381aca88.png)

レポート作成に関しては、まぁ、さらっとやって、
　こんな感じレポートにしてみました。
グラフで凹んでいるところは、うっかり、Senseを外して寝ちゃったときのスコアですorz

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/2b85c4b1-4551-22a8-1a58-12f0bb1d78d3.png)

#歩数データの可視化してみる

もう一個、歩数でも可視化してみましょうか。
「Physical Activity」フォルダ内のstepsから始まるファイルに格納されている模様。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/6318cad3-44aa-1fb6-6ca9-7a667ca464e2.png)

複数のJsonファイルあるので、フォルダ読み込みして、1つのデータにまとめた方がよさそうですね。
※このあたりは関数作成しますので、応用効きそうなので、覚えておくと良いかも。
（そんな、ちまちますることより、「you、M言語覚えちゃいなよ」と、Power Query忍者から言われそうですがｗ）

概要として、こんな感じで進めます。

　①JSONファイルのリスト作成
　②関数作成
　③①に関数を反映

#①JSONファイルのリスト作成
JSONファイルのリスト作成手順としては、
まずは、データ取得で「フォルダー」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/483bfaec-6956-1eb1-3bb3-9235d4f191b7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/d6504745-5a1b-705c-ad33-9d86efd150ed.png)

読み込むとこんな感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/769b8faa-786f-4dbc-20d7-2bddf57f3028.png)

こんな感じでフィルタして、不要なファイルは削除しましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/7edf27fe-740f-b691-2ed8-bee803a93d55.png)

nameとFolder Pathの以外項目は削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/e9bf3211-b011-4ef9-3b58-386642e7c712.png)

カスタム列の追加で、「fullPath」を作成しましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/529c0205-36e0-6e20-b10a-b574b84de9f7.png)

fullpathのみとして、nameとFolder Pathは削除しちゃいましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/45c9e6fb-37ea-0439-290a-54ad3b82ab91.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/4d2ea7d3-1359-4401-c922-db79c06bd4ea.png)

これで一旦リストの作成は完了。

#②関数の作成

続いて、②関数の作成を行います。
1個だけパスをコピーして、新規にクエリを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/ed48ea61-ee3f-8ee2-11c7-1b94c38ee8c4.png)

新しいデータソースで「Jsonファイル」を指定。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/5dc72356-768a-fda0-9421-d95df270e79f.png)

こんな感じで読み込まれるので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/d4012d2f-66b6-e307-ed38-4abc1db7274e.png)

「テーブルへの変換」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/ff855750-c150-cb8e-45de-404e80d201f1.png)

このまんまOKをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/2d080b9c-7e08-7da3-21e7-9e60405da049.png)

で、テーブルに変換されるので、「展開ボタン」改、「調子にのっちゃって、」ボタンをクリック！
※Power BI勉強会でやったら、当時はめっちゃ受けたんですよね（^ω^;）古いかｗ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/948d92fc-0796-1141-8e15-b2e23242d069.png)



とても注意：日付のフォーマットが、US表記（月/日/年）です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/59bd29ae-0a61-d034-a5e8-3d6cc0da413c.png)

ファイルのオプション設定で『英語（米国）』を設定しましょう。
※これ設定しないと、誤変換されます。
（本記事の後続で日付が2010年となっているのはかなりあとで気づいたためです。
差し替え大変なので・・そのままにしてます。m(_ _)m）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/49b1e9f3-333c-17e4-e12f-8bf5337fa267.png)


型（日付/時間と数値）を変換しましょう。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/c6d39ed3-41c5-2323-0a6b-7fcf80abbe05.png)


このクエリは、関数用のクエリなので、読み込みを無効にしておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/6f87ec53-9680-4760-5b38-07c0371dc367.png)

で、パラメータ「JsonStepPath」を1個作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/dffee1db-e89a-9c08-43ba-5d1fb344eba1.png)

で、作成したパラメータを「詳細エディター」で置き換えちゃいます。

before:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/1520aa60-03ac-411f-e2f5-8d8de455a4f8.png)

after:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/fb093547-8ff7-a2c4-2300-9a3ebc3e4792.png)

このクエリを『関数』にしちゃいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/0f17a224-cbd4-b1dd-2bf3-fd21a16d76f1.png)

関数名:FuncStep

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/e9677d95-5653-67d6-b406-265d698e49a8.png)

関数の出来上がり！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/6dfc5d17-dc58-d6a7-3456-d8f64c891136.png)

#③①に関数を反映
これを先程作成したJsonファイルのリストに食わせる。
列の追加から「カスタム関数の呼び出しを」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/973c3630-82e1-fb59-7137-c682e364fca0.png)

カスタム関数の呼び出し画面で先程作成した関数：FncStepを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/93fbab02-1523-eb8a-09cc-8d82af5fb143.png)

で、列に関数が追加されるので、「調子にのっちゃって」ボタンをクリック！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/47b584f5-7bb0-086a-e1b0-3fd8c4cb706c.png)

はい、これで、3ファイル部分のデータが作成！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/de769d92-a338-57da-8526-84c2616dbf8d.png)

カラムの型の調整と、日付・時間単位で集計してこんな感じで！Power Query完了！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/d163282e-5679-c06c-03c2-8472570c20ec.png)

リレーションシップもこんな感じで

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/d72fe641-452d-9157-9664-e1f82123edc0.png)

あとは適当に、とりあえず、マトリクスに放り込んでみる！
おお歩数との因果関係分かりそうな気がするー。（うそつけー）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/d26ce468-c205-0a79-503a-6ea2a7d322fa.png)

はい。以上となります。

如何だったでしょうか？参考になりましたでしょうか？
関数作成とか、通常やらないこともできたので、僕にとっては、とてもよい学びになりました！



#参考（Special Thanks）
Fitbitのpower BI調べたところ、以下動画が参考になったので
（ほぼパクリじゃねぇかという気もしなくないが。。汗
 学んだことをアウトプットするのが大切って誰が言ってたのでセーフ）
https://kohera.be/blog/power-bi/how-to-video-visualise-your-fitbit-data-in-power-bi/

ありがとうございました！