Azure StreamAnalysisからPower BI Dashboard(まだ今はPreview)にデータを出力できるようになり、
Azureでリアルタイム可視化する機能群がそろったとのことで、さっそくやってみました。
どんなことかっていうと
①多数のIoT機器が生成したデータを
②リアルタイムに更新されるグラフで可視化する
航空管制塔とか鉄道の管制室が、リアルタイムに飛行機とか電車のデータを見てるよね?
あんな感じのリアルタイムの可視化が
数時間で低難易度でできるようになったことが新しい。
運用コストもめちゃくちゃ安し。
クラウドってすごいねーっていつも思います。
今回初めてやってみましたが、5時間くらいで一通りの流れが作れました。
たぶん2,3回やれば、1時間以内で作れるようになりそうな気がします。
●アーキテクチャはこんな感じ
①IoT機器(たとえばセンサーにBluetooth接続したWindowsタブレット)の.NETアプリ(コーディングする)
|
(REST APIにJsonでPost)
↓
②Azure Service Bus EventHub (これは大量データを受けられるキュー)
|
(接続してくれるAdapterが用意されている)
↓
③Azure StreamAnalysis (これがキューのデータを加工して、BIツールに渡す)
|
(接続してくれるAdapterが用意されてい
る)
↓
④PowerBI Dashboard (これはBIツール。StreamAnalysisからデータくるとPush型の更新がかかる)
●実装後
①.NETアプリでこんな感じにJSONをPOST
※今回WIndows端末でやりましたが、次はRaspberry PiとかIoT用機器でやりたい(ラズパイ用のWindows10も使えるようになったし。)
Webだけどリフレッシュせずとも、グラフにピョコってデータが増えていきます。
タイムラグは10秒ないくらいかなー
これくらいなら多くの業務で許される範囲じゃないかな。
データの加工について
今回は.NETアプリからのデータを、そのまま加工せずPowerBIに送ったけど、
10分単位とかでサマリーしたいならStreamAnalysisで加工できる
StreamAnalysisには以下のようにSQLっぽいコードがかけて、
Group BYで「10秒間のデータをグループバイ」って時間を意識したSQLがかけるのが、
StreamDataっぽくてなんだか新鮮です
ただ、受け取ったデータをPowerBIに流すだけなら以下のようなSLQを書きます
SELECT
DeviceId,SendTime,Temperature,EventProcessedUtcTime,EventEnqueuedUtcTime,PartitionId
INTO
powerBI
FROM
eventHub
今日は疲れたのでここまでで、また今度、コンポーネント別の説明を書きます。