Power BIでIoTデータの可視化（初級編）

#概要
IoT関連のシステムで、データの可視化をするのにもPower BIは役立ちます。
今回はちょっとしたPoCでの時系列データを、Power BI Desktopで可視化したいと思います。

時系列データの表示だけであれば、
Power BIでなくとも様々なサービスがあります。

他のいろんなデータを組み合わせる場合、Power BIがすごく便利なので、
特にお客さんから指定が無ければ、Power BIをオススメしています。
（そしてお客さんでもいろいろ操作・変更するのが楽なので。）

今回はとりあえず可視化まで。

#システム
実際に過去に行ったPoCを題材にしたいと思います。
部屋にいくつかの温度センサーを置いて、
それをクラウド上のデータベースに保存しています。
※今回は可視化側の話なので、こちらの詳細は割愛しますが、
　そのうちこちらの事も書こうかな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/804b563d-1289-b701-ab84-d8b5a236a1c5.png)


#データ例

| ID | SensorID| MeasDate            | Temp |
|:---|:--------|:-------------------:|-----:|
|   1|Sensor A | 2019/09/21 00:00:00 |  20.4|
|   2|Sensor A | 2019/09/21 00:00:01 |  20.3|
|   3|Sensor B | 2019/09/21 00:00:01 |  21.3|
|・・・|・・・|・・・|・・・|


列の意味はこんな感じです。
ID：データログID
SensorID：センサーを区別するためのID
MeasDate：計測日時
Temp：温度

#可視化
###データの指定
Power BIを開いてデータを指定します。
Azure SQL DatabaseはSQL Serverなので、データを取得⇒SQL Serverを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/5c75e68f-7cb8-552f-5377-1d6341518d82.png)

サーバー名やデータベース、接続情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/836e43d3-47fb-0293-f47d-3cf41b5f19ac.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/52dcf797-b9cd-8f32-fcee-58262369b3b2.png)

###グラフで表現する
センサー毎の温度が見えるようにしたいと思います。
まず、折れ線グラフで温度データを表示してみます。
視覚化の折れ線グラフをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/0d1d0d43-6d34-213b-801e-ca872b889973.png)

グラフの軸プロパティに、フィールドのMeasDateをドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/a5b3c86c-7c57-b47a-0eaf-9dd6ff671138.png)

以下の赤枠部分をクリックして、日時の階層表示を解除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/574421a2-23da-75d4-f87c-f2161bf0726b.png)


グラフの値プロパティに、フィールドのTempをドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/bf7b84ca-15f4-c079-b051-4730ef83b525.png)

Tempは合計ではなく、平均を表示するように変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/f28a65b1-62b1-99ac-d830-0f2038189fb0.png)

グラフ自体をドラッグして、適当な位置・サイズに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/3b8eae54-e45b-7c25-9609-d3e497a904bd.png)

次に、スライサーを使って、表示するセンサーを切り替えられるようにします。
視覚化のスライサーをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/11338a24-321b-4990-2cbf-5da03921fc3d.png)

フィールドに、SensorIDをドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/774076c8-05b3-7538-7d36-cb2273c5b904.png)

スライサーの下記赤枠の部分をクリックして、表示をドロップダウンにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/55ca8956-4547-cf4f-a777-3f3c51511977.png)

スライサー自体をドラッグして、適当な位置・サイズに変更します。
試しにスライサーのドロップダウンから、センサーを一つ選んでみます。
グラフの表示が変わって、Sensor Aのデータが表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/d39b154a-918a-4860-b839-67d0b034acab.png)

このままだと、特定の日時範囲のデータが見れませんね。
スライサーをもう一つ追加して、日付を指定できるようにします。
視覚化でスライサーをクリックし、今度はフィールドにMeasDateをドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/417aa50e-ca59-71d9-91bf-ff6247473178.png)

追加したスライサー自体をドラッグして、適当な位置・サイズに変更します。
スライサーで日付を変更してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/2da7ea7a-2853-ad44-77c6-74705d3315df.png)

とある日付だけを表示することができました。
室温はあまり急激に温度が変わることはないので、
時間レベルでデータが表示できるだけでも傾向はわかりますが、
もっと細かくデータを見たいということが多々あります。
（時分秒のテーブルを用意して、スライサーにセットするなど）いくつか方法は考えらえますが
MarketPlaceにある「Time Brush Slicer」を使用してみます。

###Time Brush Slicerの追加
視覚化の「・・・」をクリックし、「MarketPlaceからインポートする」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/2faab0a1-56dc-5e55-f12b-5ab7c300043c.png)

検索窓にTime Brushと入力し、表示された「Time Brush Slicer」の追加ボタンをクリックします。
視覚化にTime Brush Slicerが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/f88ec11e-f567-2638-e611-48f4ed550aa9.png)


視覚化のTime Brush Slicerをクリックし、適当な位置・サイズにドラッグします。
フィールドのMeasDateとTempをそれぞれプロパティのDateとWith Valuesにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/2a2e0900-4ea3-f122-40a9-6f50092c1c81.png)

こんな感じになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/f3ed4689-3d09-4708-eb4f-f657ce7d4357.png)

Time Brush Slicerの適当な位置をドラッグしてみてください。
ドラッグした範囲のデータが表示されます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/10e2e990-98e7-9829-9c4b-6ee4dea7a0ba.png)

#まとめ？
ということで、IoTシステムで収集したデータを可視化するところまでやってみました。
タイトルとか軸の名前とかデフォルト表示のままなので、適当に変えてみましょう。
とりあえず見える化といわれたら、こんな感じで一旦作って見せています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146789/151e36f3-f148-8155-ce3d-857c41ea498d.png)

実際はここから他のデータと複合的に組み合わせて見えるようにしたりしていくんですが、
それはまた別の機会に。