STEP-2.Azure Stream Analytics と PowerBI の 設定 とリアルタイム分析の表示
概要
データは鮮度が命! ということで、データストリーミングを手軽にAzureで実装をおこなってみました。構成は、Azureの 「IoT Hub + Stream Analytics + PowerBI」となります。 IoT疑似データ生成プログラムをPythonで実装し IoT Hub にデータを投げ、Stream Analytics でストリーミング+クエリ処理を行い、そのクエリ結果=分析情報をリアルタイムにPowerBIに表示してみました。
データストリーミングのデファクトは「Apache kafka(商用版:Confluent)」で、「Azure HDInsight」で Apache Kafak の実装を行えますが、それより簡易にストリーミング処理を行うためのものとなります。
- 以下の2つのステップで順次説明します。今回は STEP-1 について説明します。
- STEP-1.Azure IoT Hub の設定とデータ受信のモニタリング
- STEP-2.Azure Stream Analytics と PowerBI の 設定 とリアルタイム分析の表示
ローカル環境
macOS Big Sur 11.3
python 3.8.3
Stream Analytics の設定
Stream Analytics の作成
Azure Portalにログインし、Stream Analytics を作成します。 ジョブ名に「sa-ituru-stream-test」を指定します。
画面下部の「作成」ボタンを押します。
入力の定義
作成された「sa-ituru-stream-test」画面の左側から「入力」を選択後、画面上部の「+ストリーム入力の追加」から「IoT Hub」を選択します。
新たに表示される「IoT Hub」画面において、「入力のエイリアス」に「IothubStreamTestDummyInput」を、「コンシューマグループ」に「consumerdummy」と入力し、画面下部の「保存」ボタンを押します。
出力の定義
作成された「sa-ituru-stream-test」画面の左側から「出力」を選択後、画面上部の「+追加」から「Power BI」を選択します。
新たに表示される「Power BI」画面において、「出力エイリアス」に「IothubStreamTestDummyOutputSsection」を、「データセット名」に「IoTDummyDataset」を、「テーブル名」に「iotvalue_tbl」と入力し、Power BI の接続承認を経て、画面下部の「保存」ボタンを押します。
クエリ定義
作成された「sa-ituru-stream-test」画面の左側から「クエリ」を選択し、「入力」に「IothubStreamTestDummyInput」を設定します。
テストのために「クエリ欄」に以下を記述します。
SELECT
section,
vol_1,
Vol_2
INTO
[YourOutputAlias]
FROM
IothubStreamTestDummyInput
STEP-1 の IoT疑似データ生成プログラムを実行したあとに、Azure Stream Analytics でデータの受信とクエリ結果の確認のために、「クエリのテスト」を実行します。
結果、受信したデータのクエリ処理を確認できたので、「出力」に「IothubStreamTestDummyOutputSsection」を設定します。
データ分析のために「クエリ欄」に以下を記述します。Stream Analyticsのクエリを参考にさせていただき、section 毎に vol_2 値の10秒間の平均値を1秒スライドで表示させるクエリを作成しました。
SELECT
section,
AVG(vol_2)
INTO
IothubStreamTestDummyOutputSsection
FROM
IothubStreamTestDummyInput timestamp by time
GROUP BY
section,
SlidingWindow(second, 10)
Power BI の設定
「powerbi.microsoft.com」に接続しサインインします。サインイン後、画面上部の「Power BI Service」を選択します。
画面左側から「マイワークスペース」を選択し、画面上部の「+新規」から「ダッシュボード」を選択します。
「ダッシュボードの作成」画面の「ダッシュボード名」に「IoTHubStream」を入力し、「作成」ボタンを押します。
「マイワークスペース」ー「ダッシュボード」ー「IoTHubStream」を選択し、画面右上の「編集」から「タイルの追加」を選択します。
「タイルの追加」画面から「カスタムストリーミングデータ」を選択し、「次へ」ボタンを押します。
「カスタムストリーミングデータ タイルの追加」画面の「データセット」に「IoTDummyDataset」を入力し、「次へ」ボタンを押します。
次画面の「視覚化タイプ」に「集合横棒グラフ」を選択し、「軸」に「section」、「値」に「AVG」を選択し、「次へ」ボタンを押します。
「タイルの詳細」画面の「タイトル」に「IoTダミーデータ」、「サブタイトル」に「vol_2 AVG」と入力し、「適応」ボタンを押します。
ジョブの実行
Azure Stream Analytics の「sa-ituru-stream-test」ジョブ画面の上部にある「▷開始」ボタンを押し、新たに表示された「ジョブの開始」画面下部の「開始」ボタンを押し、ジョブを実行させます。
デバイス(IoTデータ生成プログラム)から IoT Hub へのデータ送信
STEP-1 の IoT疑似データ生成プログラムを実行してみます。1秒間隔で120件のデータを IoT Hub へ送信します。
$ python IoTSampleData-v3.py --count 120 --mode ih --wait 1.0
送信されたデータは、同時に Power BI のダッシュボードで確認できます。
これで、IoTデバイス(Pythonプログラム)から送信されたデータが IoT Hub - Stream Analytics を経由し、クエリ処理された結果を Power BI でリアルタイム表示されることを確認できました。
参考情報
以下の情報を参考にさせていただきました。感謝申し上げます。
Stream Analytics入門してみた #azurejp
Stream Analytics で 凝った集計処理を実装する
CO2濃度をAzureで可視化してみた
本題のステップ
STEP-1.Azure IoT Hub の設定とデータ受信のモニタリング
STEP-2.Azure Stream Analytics と PowerBI の 設定 とリアルタイム分析の表示