Power BI を使用したデータ可視化
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Microsoft Azure IoT を使用した Power BI でのデータ可視化
SenseCAP K1100 - センサープロトタイプキットは、Seeed Studio が LoRa® 通信技術とエッジインテリジェンス製品のエッセンスを凝縮し、LoRa® および IoT アプリケーションの最も簡単な展開と習得を可能にするものです。

産業用センサーへのアップグレードが可能
SenseCAP S2110 コントローラー と S2100 データロガー を使用することで、Grove を簡単に LoRaWAN® センサーに変えることができます。Seeed はプロトタイピングを支援するだけでなく、堅牢な 産業用センサー を備えた SenseCAP シリーズを使用してプロジェクトを拡張する可能性も提供します。
IP66 ハウジング、Bluetooth 設定、グローバル LoRaWAN® ネットワークとの互換性、内蔵 19 Ah バッテリー、そしてアプリからの強力なサポートにより、SenseCAP S210x は産業用途に最適な選択肢となります。このシリーズには、土壌水分、空気温度と湿度、光強度、CO2、EC、そして 8-in-1 気象ステーション用のセンサーが含まれています。次の産業プロジェクトで最新の SenseCAP S210x をお試しください。
SenseCAP 産業用センサー | |||
S2100 データロガー | S2101 空気温度 & 湿度 | S2102 光強度 | S2103 空気温度 & 湿度 & CO2 |
S2104 土壌水分 & 温度 | S2105 土壌水分 & 温度 & EC | S2110 LoRaWAN® コントローラー | S2120 8-in-1 気象ステーション |
Microsoft Azure IoT
Microsoft Azure IoT は、Microsoft が管理するクラウドサービスのコレクションであり、数十億の IoT 資産を接続、監視、制御します。これには、デバイスや機器のセキュリティおよびオペレーティングシステム、さらに IoT アプリケーションの構築、展開、管理を支援するデータと分析が含まれています。
Power BI
Power BI と Azure 分析サービス(Azure Synapse Analytics や Azure Data Lake Storage を含む)を組み合わせることで、データ資産全体を接続して分析できます。ペタバイト規模のデータを分析し、高度な AI 機能を活用し、追加のデータ保護を適用し、組織全体でインサイトを簡単に共有できます。
Power BI と Azure を組み合わせてデータ資産全体を接続、統合、分析することで、データを競争優位性に変えることができます。
このチュートリアルでは、IoT Central アプリケーションを構成してデバイスから収集したテレメトリをエクスポートします。その後、Power BI を使用して、テレメトリから得られたインサイトを店舗管理者が視覚化できるカスタムダッシュボードを作成します。

このチュートリアルでは以下を学びます:
- IoT Central アプリケーションを構成して、テレメトリをイベントハブにエクスポートする方法。
- Logic Apps を使用してイベントハブから Power BI ストリーミングデータセットにデータを送信する方法。
- ストリーミングデータセットのデータを視覚化する Power BI ダッシュボードを作成する方法。
事前準備
このチュートリアルを完了するには、以下が必要です:
- Azure サブスクリプション。Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Power BI アカウント。Power BI アカウントをお持ちでない場合は、開始する前に 無料の Power BI Pro トライアル にサインアップしてください。
- 以下のいずれかの Wiki で、Azure IoT Central にデータを正常にアップロードしていること。
リソースグループを作成する
イベントハブとロジックアプリを作成する前に、それらを管理するための リソースグループ を作成する必要があります。リソースグループは、In-store analytics - checkout IoT Central アプリケーションと同じ場所にある必要があります。リソースグループを作成するには:
ステップ 1. Azure ポータル にサインインします。
ステップ 2. 左側のナビゲーションで リソースグループ を選択します。その後、作成 を選択します。

- サブスクリプション には、IoT Central アプリケーションを作成する際に使用した Azure サブスクリプションの名前を選択します。
- リソースグループ の名前には retail-store-analysis を入力します。
- リージョン には、IoT Central アプリケーションで選択したものと同じリージョンを選択します。
ステップ 3. [レビュー + 作成] を選択します。
レビュー + 作成ページで [作成] を選択します。

これで、サブスクリプション内に retail-store-analysis という名前のリソースグループが作成されました。
イベントハブの設定
小売モニタリングアプリケーションでテレメトリをエクスポートするように設定する前に、エクスポートされたデータを受信するためのイベントハブを作成する必要があります。以下の手順に従って、イベントハブを作成してください:
ステップ 4. Azure ポータルで、画面左上の リソースの作成 を選択します。

ステップ 5. Marketplace を検索で「Event Hubs」と入力し、Enter キーを押します。

ステップ 6. イベントハブを作成する
Event Hubs ページで 作成 を選択します。Create Namespace ページで以下の手順を実行します:
- IoT Central アプリケーションを作成したのと同じ サブスクリプション を選択します。
- retail-store-analysis リソースグループを選択します。
- k1100-retail-store-analysis のような一意の名前を名前空間に入力します。
- IoT Central アプリケーションで使用したのと同じ場所を選択します。
- Basic プライシング層を選択します。
確認および作成 を選択します。リソースのプロビジョニングには数分かかる場合があります。

ステップ 7. イベントハブの共有キーを取得する
Azure ポータルで、retail-store-analysis リソースグループに移動します。
デプロイメントが完了するのを待ちます。デプロイメントのステータスを更新するには、更新 を選択する必要がある場合があります。また、通知でイベントハブ名前空間の作成ステータスを確認することもできます。

retail-store-analysis リソースグループで、Event Hubs Namespace を選択します。

ポータルで Event Hubs Namespace のホームページが表示されます。

IoT Central から接続するには、送信権限を持つ 接続文字列 が必要です。接続文字列を作成するには:
- Azure ポータルの Event Hubs 名前空間で、共有アクセス ポリシー を選択します。+ 追加 を選択します。

- ポリシー名として SendPolicy を入力し、送信 を選択してから 作成 を選択します。

- ポリシーのリストで SendPolicy を選択します。接続文字列-主キー の値をメモしておきます。この値は、IoT Central でエクスポート先を設定する際に使用します。

ステップ 8. イベントハブの管理およびリッスンキーを取得する
ロジックアプリからイベントハブに接続するには、管理およびリッスン権限を持つ接続文字列が必要です。接続文字列を取得するには:
Azure ポータルの Event Hubs 名前空間で、共有アクセス ポリシー を選択します。
ポリシーのリストで RootManageSharedAccessKey を選択します。 接続文字列-主キー の値をメモしておきます。この値は、ロジックアプリでイベントハブからテレメトリを取得する際に使用します。

ステップ 8. 使用するイベントハブを作成する
Event Hubs Namespace を作成したので、IoT Central アプリケーションで使用するイベントハブを作成できます:
- ポータルの Event Hubs Namespace のホームページで、+ Event Hub を選択します。

- Create Event Hub ページで、名前として store-telemetry を入力し、作成 を選択します。

これで、IoT Central アプリケーションからデータをエクスポートする際に使用できるイベントハブが作成されました。

データエクスポートの設定
イベントハブを作成したら、接続されたデバイスからのテレメトリをエクスポートするように IoT Central アプリケーションを設定できます。以下の手順でエクスポートを設定する方法を説明します。
ステップ 1. IoT Central アプリケーション にサインインします。

ステップ 2. データエクスポート
左側のペインで Data export を選択します。次に + New export を選択します。

- エクスポート名として Telemetry export を入力します。
- エクスポートするデータの種類として Telemetry を選択します。
- Destinations セクションで create a new one を選択します。

- 新しい宛先
- Destination name に Store data event hub を入力します。
- Destination type に Azure Event Hubs を選択します。
- Authorization に Connection string を選択します。
- イベントハブを作成した際に保存した SendPolicy の接続文字列を貼り付けます。
- Event Hub に store-telemetry を入力します。

Create を選択し、次に Save を選択します。

Telemetry export ページで、エクスポートステータスが Healthy に変わるのを待ちます。

データエクスポートがイベントハブにテレメトリを送信し始めるまで数分かかる場合があります。Data exports ページでエクスポートのステータスを確認できます。
Power BI データセットの作成
Power BI ダッシュボードは、小売監視アプリケーションからのデータを表示します。このソリューションでは、Power BI ダッシュボードのデータソースとして Power BI ストリーミングデータセットを使用します。このセクションでは、ストリーミングデータセットのスキーマを定義し、ロジックアプリがイベントハブからデータを転送できるようにします。以下の手順で、環境センサー用の 2 つのストリーミングデータセットと、占有センサー用の 1 つのストリーミングデータセットを作成する方法を説明します。
ステップ 1. Power BI アカウント にサインインします。
ステップ 2. ワークスペースを作成します。
Workspaces を選択し、次に Create a workspace を選択します。

Create a workspace ページで、Workspace name に In-store analytics - checkout を入力します。Save を選択します。

ステップ 3. ストリーミングデータセットを作成します。
ワークスペースページで、+ New > Streaming dataset を選択します。

New streaming dataset ページで、API を選択し、次に Next を選択します。

Dataset name に Sensor を入力します。
以下の表に示す 3 つのストリーム値を入力します。
値の名前 | 値のタイプ |
---|---|
Timestamp | DataTime |
Light | Number |
Acceleration X | Number |
Acceleration Y | Number |
Acceleration Z | Number |
Sound | Number |
これでストリーミングデータセットが作成されました。ロジックアプリは、In-store analytics - checkout アプリケーションに接続された Wio Terminal からのテレメトリをデータセットにルーティングします。

ロジックアプリを作成する
このソリューションでは、ロジックアプリがイベントハブからテレメトリを読み取り、データを解析し、作成した Power BI ストリーミングデータセットに送信します。
ロジックアプリを作成する前に、IoT Central アプリケーションに接続した Wio Terminal のデバイス ID が必要です。
ステップ 1. デバイス ID を確認する
- IoT Central アプリケーション にサインインします。左側のペインで Devices を選択し、次に Seeed Wio Terminal を選択します。
Device ID をメモしてください。以下のスクリーンショットでは、ID は k1100 です:

ステップ 2. ロジックアプリを作成する
- Azure ポータル にサインインし、画面左上の Create a resource を選択します。

- Marketplace を検索する際に Logic App と入力し、Enter を押します。

Logic App 作成ページで以下を設定します:
- IoT Central アプリケーションを作成したのと同じ Subscription を選択します。
- retail-store-analysis リソースグループを選択します。
- ロジックアプリの一意の名前を入力します(例:yourname-retail-store-analysis)。
- IoT Central アプリケーションを作成したのと同じ場所を選択します。
- Type を Consumption に設定します。

Create を選択します。リソースのプロビジョニングには数分かかる場合があります。
ステップ 2. Logic Apps Designer を構成する
Azure ポータルで新しいロジックアプリに移動します。Logic Apps Designer ページで下にスクロールし、Blank Logic App を選択します。

- Search connectors and triggers に Event Hubs と入力します。
- Triggers で When events are available in Event Hub を選択します。

- Connection name に Store telemetry を入力します。
- Authentication Type として Access key を選択します。
- 以前にメモした RootManageSharedAccessKey ポリシーのイベントハブ接続文字列を貼り付け、Create を選択します。

Event Hub アクションで以下を設定します:
- Event Hub name に store-telemetry を選択します。
- Content type に application/json を選択します。
- Interval を 3 に、Frequency を seconds に設定します。
- Save を選択してロジックアプリを保存します。

ロジックアプリデザインにロジックを追加するには、Code view を選択します:

"actions: {},"
を以下の JSON に置き換えます。その後、プレースホルダー [YOUR RUUVITAG DEVICE ID]
を Wio Terminal の ID に置き換えます。
"actions": {
"Initialize_Device_ID_variable": {
"inputs": {
"variables": [
{
"name": "DeviceID",
"type": "String"
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Parse_Telemetry": {
"inputs": {
"content": "@triggerBody()?['ContentData']",
"schema": {
"properties": {
"deviceId": {
"type": "string"
},
"enqueuedTime": {
"type": "string"
},
"telemetry": {
"properties": {
"accelX": {
"type": "number"
},
"accelY": {
"type": "number"
},
"accelZ": {
"type": "number"
}
},
"type": "object"
},
"templateId": {
"type": "string"
}
},
"type": "object"
}
},
"runAfter": {
"Initialize_Device_ID_variable": [
"Succeeded"
]
},
"type": "ParseJson"
},
"Set_Device_ID_variable": {
"inputs": {
"name": "DeviceID",
"value": "@body('Parse_Telemetry')?['deviceId']"
},
"runAfter": {
"Parse_Telemetry": [
"Succeeded"
]
},
"type": "SetVariable"
},
"Switch_by_DeviceID": {
"cases": {
"Occupancy": {
"actions": {},
"case": "Occupancy"
},
"Sensor_environment": {
"actions": {},
"case": "k1100"
}
},
"default": {
"actions": {}
},
"expression": "@variables('DeviceID')",
"runAfter": {
"Set_Device_ID_variable": [
"Succeeded"
]
},
"type": "Switch"
}
},
保存を選択し、次にデザイナーを選択して、追加したロジックのビジュアルバージョンを確認します。

Switch by DeviceIDを選択してアクションを展開します。その後、Sensor environmentを選択し、アクションを追加を選択します。

Search connectors and actionsで、Add rows to a datasetを入力します。Power BI Add rows to a datasetアクションを選択します。

サインインを選択し、指示に従ってPower BIアカウントにサインインします。サインインプロセスが完了したら、Add rows to a datasetアクションで以下を設定します:
- WorkspaceとしてIn-store analytics - checkoutを選択します。
- DatasetとしてSensorを選択します。
- TableとしてRealTimeDataを選択します。
- Add new parameterを選択し、Timestamp、Light、Acceleration X、Acceleration Y、Acceleration Z、およびSoundフィールドを選択します。

- Timestampフィールドを選択し、Dynamic contentリストからenqueuedTimeを選択します。
- Lightフィールドを選択し、Parse Telemetryの横にあるSee moreを選択します。その後、Lightを選択します。

- Acceleration Xフィールドを選択し、Parse Telemetryの横にあるSee moreを選択します。その後、accelXを選択します。
- Acceleration Yフィールドを選択し、Parse Telemetryの横にあるSee moreを選択します。その後、accelYを選択します。
- Acceleration Zフィールドを選択し、Parse Telemetryの横にあるSee moreを選択します。その後、accelZを選択します。
- Soundフィールドを選択し、Parse Telemetryの横にあるSee moreを選択します。その後、Soundを選択します。
保存を選択して変更を保存します。Sensor environmentアクションは以下のスクリーンショットのようになります。
Zone 2 environmentアクションを選択し、アクションを追加を選択します。
Search connectors and actionsで、Add rows to a datasetを入力します。
ロジックアプリは自動的に実行されます。各実行のステータスを確認するには、Azureポータルのロジックアプリの概要ページに移動し、Runs historyを選択します。更新を選択して実行リストを更新します。
Power BIダッシュボードを作成する
これで、IoT Centralアプリケーションからイベントハブを通じてテレメトリが流れています。その後、ロジックアプリがイベントハブメッセージを解析し、それをPower BIストリーミングデータセットに追加します。次に、テレメトリを視覚化するためのPower BIダッシュボードを作成します:
ステップ1. Power BIアカウントにサインインします。
ステップ2. Workspaces > In-store analytics - checkoutを選択します。
ステップ3. + New > Dashboardを選択します。

Store analyticsをダッシュボード名として入力し、作成を選択します。
折れ線グラフを追加する
Wio Terminalの内蔵センサーからの三軸データを表示する折れ線グラフタイルを追加します。以下の表の情報を使用してタイルを作成します。各タイルを追加するには、編集 > タイルを追加を選択します。

Custom Streaming Dataを選択し、次に次へを選択します。

水平座標にタイムスタンプを表示し、垂直座標にX、Y、Z軸のデータ値を表示するように設定します。

データストリームが転送を開始すると、ダッシュボードが折れ線グラフとして表示されます。

技術サポートと製品ディスカッション
弊社の製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートをご提供しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。