教學課程:從 Azure IoT Central 匯出數據,並將 Power BI 中的深入解析可視化

在先前的兩個教學課程中,您已使用 店內分析 - 結帳 應用程式範本來建立和自定義 IoT Central 應用程式。 在本教學課程中,您會設定IoT Central應用程式,以匯出從裝置收集的遙測。 接著,您可以使用 Power BI 建立市集管理員的自定義儀錶板,以可視化衍生自遙測的見解。

在本教學課程中,您會了解如何:

  • 設定 IoT Central 應用程式,將遙測匯出至事件中樞。
  • 使用 Logic Apps 將數據從事件中樞傳送至 Power BI 串流數據集。
  • 建立 Power BI 儀錶板,以將串流數據集中的數據可視化。

必要條件

若要完成本教學課程,您需要:

建立資源群組

建立事件中樞和邏輯應用程式之前,您必須建立資源群組來管理它們。 資源群組應該位於與店內 分析相同的位置 - 結帳 IoT Central 應用程式。 若要建立資源群組︰

  1. 登入 Azure 入口網站
  2. 在左側瀏覽中,選取 [資源群組]。 然後選取 [新增]。
  3. 針對 [ 訂用帳戶],選取您用來建立IoT Central 應用程式的 Azure 訂用帳戶名稱。
  4. 針對 [ 資源組 名],輸入 retail-store-analysis
  5. 針對 [ 區域],選取您為IoT Central 應用程式選擇的相同區域。
  6. 選取 [檢閱 + 建立] 。
  7. [檢閱 + 建立] 頁面上,選取 [建立]

您現在在訂用帳戶中有一 個名為 retail-store-analysis 的資源群組。

建立事件中樞

您必須先建立事件中樞來接收導出的數據,才能設定零售監視應用程式以匯出遙測。 下列步驟示範如何建立事件中樞:

  1. 在 Azure 入口網站 中,選取畫面左上方的 [建立資源]。
  2. [搜尋 Marketplace] 中,輸入 事件中樞,然後按 Enter
  3. 在 [事件中 樞] 頁面上,選取 [ 建立]。
  4. 在 [ 建立命名空間] 頁面上,採取下列步驟:
    • 輸入命名空間的唯一名稱,例如 yourname-retail-store-analysis。 系統會檢查此名稱是否可用。
    • 選擇 [ 基本 ] 定價層。
    • 選取您用來建立IoT Central 應用程式的相同 用帳戶。
    • 選取 retail-store-analysis 資源群組。
    • 選取您用於IoT Central 應用程式的相同位置。
    • 選取 建立。 您可能需要等候幾分鐘,系統才能布建資源。
  5. 在入口網站中,流覽至 零售商店分析 資源群組。 等待部署完成。 您可能需要選取 [ 重新 整理] 以更新部署狀態。 您也可以在通知中檢查事件中樞命名空間建立的狀態。
  6. 在 retail-store-analysis 資源群組中,選取 [事件中樞命名空間]。 您會在入口網站中看到事件中樞命名空間的首頁

您需要具有從 IoT Central 連線之傳送許可權的 連接字串。 若要建立 連接字串:

  1. 在 Azure 入口網站 的事件中樞命名空間中,選取 [共用存取原則]。 原則清單包含預設 的 RootManageSharedAccessKey 原則。
  2. 選取 + 新增
  3. 輸入 SendPolicy 作為原則名稱,選取 [ 傳送],然後選取 [ 建立]。
  4. 在原則清單中選取 [SendPolicy ]。
  5. 記下 連線 字串-主鍵值。 當您在IoT Central 中設定匯出目的地時,請使用它。

您需要具有管理和接聽許可權的 連接字串,才能從邏輯應用程式連線到事件中樞。 若要擷取 連接字串:

  1. 在 Azure 入口網站 的事件中樞命名空間中,選取 [共用存取原則]。 原則清單包含預設 的 RootManageSharedAccessKey 原則。
  2. 選取原則清單中的 RootManageSharedAccessKey
  3. 記下 連線 字串-主鍵值。 當您設定邏輯應用程式從事件中樞擷取遙測時,您可以使用它。

現在您有事件 中樞命名空間,您可以建立事件中樞來搭配IoT Central 應用程式使用:

  1. 在入口網站中事件 中樞命名空間 的首頁上,選取 [+ 事件中樞]。
  2. 在 [ 建立事件中樞 ] 頁面上,輸入 store-telemetry 作為名稱,然後選取 [ 建立]。

您現在有事件中樞,您可以在設定從 IoT Central 應用程式匯出資料時使用:

顯示 Azure 入口網站 中事件中樞命名空間的螢幕快照。

設定數據匯出

現在您有事件中樞,您可以設定店內 分析 - 結帳 應用程式,以從聯機的裝置導出遙測。 下列步驟示範如何設定匯出:

  1. 登入您的 店內分析 - 簽出 IoT Central 應用程式。
  2. 選取 左窗格中的數據匯出
  3. 選取 [+ 新增匯出]。
  4. 輸入 遙測匯出 作為 匯出名稱
  5. 選取 [遙測 ] 作為要匯出的數據類型。
  6. 在 [ 目的地] 區 段中,選取 [建立新的目的地]。
  7. 輸入 [儲存數據事件中樞 ] 作為 [ 目的地名稱]。
  8. 選取 [Azure 事件中樞] 作為目的地類型。
  9. 選取 [連線 ion 字串] 作為授權類型。
  10. 貼上您在建立事件中樞時所儲存之 SendPolicy 的 連接字串
  11. 輸入 store-telemetry 作為事件中
  12. 選取 [建立],然後選取 [儲存]。
  13. 在 [ 遙測導出 ] 頁面上,等候導出狀態變更為 [狀況良好]。

數據匯出可能需要幾分鐘的時間,才能開始將遙測數據傳送至事件中樞。 您可以在 [數據匯出] 頁面上看到匯出的狀態。

建立 Power BI 數據集

Power BI 儀錶板會顯示來自零售監視應用程式的數據。 在此解決方案中,您會使用Power BI串流資料集作為Power BI儀錶板的數據源。 在本節中,您會定義串流數據集的架構,讓邏輯應用程式可以從事件中樞轉送數據。 下列步驟示範如何為環境感測器建立兩個串流數據集,以及一個佔用感測器的串流數據集:

  1. 登入您的 Power BI 帳戶。

  2. 選取 [ 工作區],然後選取 [ 建立工作區]。

  3. 在 [ 建立工作區 ] 頁面上,輸入 店內分析 - 簽出工作區名稱。 選取 [儲存]。

  4. 在工作區頁面上,選取 [+ 新增 > 串流數據集]。

  5. 在 [ 新增串流數據集] 頁面上,選擇 [ API],然後選取 [ 下一步]。

  6. 輸入 區域 1 感測器 作為 數據集名稱

  7. 在下表中輸入來自資料流的三個值:

    值名稱 值類型
    時間戳記 Datetime
    溼度 數字
    溫度 數字
  8. 開啟 [歷程記錄數據分析 ]。

  9. 選取 [建立],然後選取 [完成]。

  10. 建立另一個名為 Zone 2 感測器 的串流數據集,其架構和設定與 區域 1 感測器 串流數據集相同。

您現在有兩個串流數據集。 邏輯應用程式會將遙測從連線至店內 分析的兩個環境感測器路由傳送 - 結帳 應用程式至這兩個數據集:

顯示 Power B I 中區域一個感測器資料集定義的螢幕快照。

此解決方案會針對每個感測器使用一個串流數據集,因為無法將篩選套用至 Power BI 中的串流數據。

您也需要佔用遙測的串流資料集:

  1. 在工作區頁面上,選取 [ 建立 > 串流數據集]。

  2. 在 [ 新增串流數據集] 頁面上,選擇 [ API],然後選取 [ 下一步]。

  3. 輸入 佔用率感測器 作為 數據集名稱

  4. 在下表中輸入來自資料流的五個值:

    值名稱 值類型
    時間戳記 Datetime
    佇列長度 1 數字
    佇列長度 2 數字
    停留時間 1 數字
    停留時間 2 數字
  5. 開啟 [歷程記錄數據分析 ]。

  6. 選取 [建立],然後選取 [完成]。

您現在有第三個串流數據集,可儲存來自模擬佔用感測器的值。 此感測器會在商店的兩個結帳處報告佇列長度,以及客戶在這些佇列中等候的時間長度:

顯示 Power B I 中佔用資料集定義的螢幕快照。

建立邏輯應用程式

在此解決方案中,邏輯應用程式會從事件中樞讀取遙測、剖析數據,然後將它傳送至您建立的 Power BI 串流數據集。

建立邏輯應用程式之前,您需要您在 Azure IoT Central 中建立店內分析應用程式中連線到 IoT Central 應用程式的兩個 RuuviTag 感測器裝置識別碼:

  1. 登入您的 店內分析 - 簽出 IoT Central 應用程式。
  2. 選取左窗格的 [裝置]。 然後選取 [RuuviTag]。
  3. 記下 裝置標識碼。 在下列螢幕快照中,標識符為 8r6vfyiv1x1rvfk4ymk6z

顯示 IoT Central 應用程式中裝置清單中裝置識別碼的螢幕快照。

下列步驟說明如何在 Azure 入口網站 中建立邏輯應用程式:

  1. 登入 Azure 入口網站,然後選取畫面左上方的 [建立資源]。
  2. [搜尋 Marketplace] 中,輸入 邏輯應用程式,然後按 Enter
  3. 邏輯應用程式頁面上,選取建立
  4. 在 [ 建立] 頁面上:
    • 輸入邏輯應用程式的唯一名稱,例如 yourname-retail-store-analysis
    • 選取您用來建立IoT Central 應用程式的相同 用帳戶。
    • 選取 retail-store-analysis 資源群組。
    • 選取 [類型] 作為 [取用]。
    • 選取您用於IoT Central 應用程式的相同位置。
    • 選取 建立。 您可能需要等候幾分鐘,系統才能布建資源。
  5. 在 Azure 入口網站 中,流覽至新的邏輯應用程式。
  6. 在 [ Logic Apps 設計工具] 頁面上,向下捲動並選取 [ 空白邏輯應用程式]。
  7. [搜尋連接器和觸發程式] 中,輸入 事件中樞。
  8. [觸發程式] 中,選取 [事件中樞可用時]。
  9. 輸入 [儲存遙測] 作為 連線 名稱
  10. 選取 [存取金鑰 ] 作為驗證類型。
  11. 貼上您先前記下之 RootManageSharedAccessKey 原則的事件中樞 連接字串,然後選取 [建立]。
  12. 在 [ 事件中樞 ] 動作中提供事件時:
    • 在 [事件中 樞名稱] 中,選取 [存放區遙測]。
    • [內容類型] 中,選取 [應用程式/json]。
    • 將 Interval 設定為 3,並將 Frequency 設定為秒
  13. 選取 [儲存] 以儲存邏輯應用程式。

若要將邏輯新增至邏輯應用程式設計,請選取 [ 程序代碼檢視]:

  1. 將取代 "actions": {}, 為下列 JSON。 然後將這兩個佔位元 [YOUR RUUVITAG DEVICE ID 1] 取代 [YOUR RUUVITAG DEVICE ID 2] 為兩個 RuuviTag 裝置的標識碼。 您先前已記下這些識別碼:

    "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": {
                                "DwellTime1": {
                                    "type": "number"
                                },
                                "DwellTime2": {
                                    "type": "number"
                                },
                                "count1": {
                                    "type": "integer"
                                },
                                "count2": {
                                    "type": "integer"
                                },
                                "humidity": {
                                    "type": "number"
                                },
                                "temperature": {
                                    "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"
                },
                "Zone 2 environment": {
                    "actions": {},
                    "case": "[YOUR RUUVITAG DEVICE ID 2]"
                },
                "Zone_1_environment": {
                    "actions": {},
                    "case": "[YOUR RUUVITAG DEVICE ID 1]"
                }
            },
            "default": {
                "actions": {}
            },
            "expression": "@variables('DeviceID')",
            "runAfter": {
                "Set_Device_ID_variable": [
                    "Succeeded"
                ]
            },
            "type": "Switch"
        }
    },
    
  2. 選取 [ 儲存 ],然後選取 [ 設計工具 ],以查看您所新增邏輯的視覺版本:

    Azure 入口網站 中具有初始邏輯應用程式的Logic Apps設計工具螢幕快照。

  3. 選取 [ 依 DeviceID 切換] 以展開動作。 然後選取 [ 區域 1 環境],然後選取 [ 新增動作]。

  4. [搜尋連接器和動作] 中,輸入 [將數據列新增至數據集]。

  5. 選取 Power BI 將資料列新增至數據集 動作。

  6. 選取 [登入 ],然後遵循提示登入您的 Power BI 帳戶。

  7. 登入程式完成之後,請在 [ 將數據列新增至數據集 ] 動作中:

    • 選取 [店內分析 - 簽出 ] 作為工作區。
    • 選取 [區域 1 感測器 ] 作為數據集。
    • 選取 [RealTimeData] 作為數據表。
    • 選取 [新增參數 ],然後選取 [ 時間戳]、 [濕度] 和 [ 溫度] 字段。
    • 選取 [時間戳] 字段,然後從 [動態內容] 列表中選取 enqueuedTime
    • 選取 [濕度] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 濕度
    • 選取 [溫度] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 溫度

    選取儲存以儲存變更。 區域 1 環境 動作看起來像下列螢幕快照:

    顯示 Logic Apps 設計工具中區域一個環境動作的螢幕快照。

  8. 選取 [ 區域 2 環境 ] 動作,然後選取 [ 新增動作]。

  9. [搜尋連接器和動作] 中,輸入 [將數據列新增至數據集]。

  10. 選取 Power BI 將資料列新增至數據集 動作。

  11. 在 [ 將資料列新增至資料集 2 ] 動作中:

    • 選取 [店內分析 - 簽出 ] 作為工作區。
    • 選取 [區域 2 感測器 ] 作為數據集。
    • 選取 [RealTimeData] 作為數據表。
    • 選取 [新增參數 ],然後選取 [ 時間戳]、 [濕度] 和 [ 溫度] 字段。
    • 選取 [時間戳] 字段,然後從 [動態內容] 列表中選取 enqueuedTime
    • 選取 [濕度] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 濕度
    • 選取 [溫度] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 溫度

    選取儲存以儲存變更。

  12. 選取 [ 佔用人數 ] 動作,然後選取 [ 新增動作]。

  13. [搜尋連接器和動作] 中,輸入 [將數據列新增至數據集]。

  14. 選取 Power BI 將資料列新增至數據集 動作。

  15. 在 [ 將資料列新增至資料集 3 ] 動作中:

    • 選取 [店內分析 - 簽出 ] 作為工作區。
    • 選取 [ 佔用率感測器 ] 作為數據集。
    • 選取 [RealTimeData] 作為數據表。
    • 選取 [新增參數],然後選取 [時間戳]、[佇列長度 1]、[佇列長度 2]、[停留時間 1] 字段。
    • 選取 [時間戳] 字段,然後從 [動態內容] 列表中選取 enqueuedTime
    • 選取 [佇列長度 1] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 count1
    • 選取 [佇列長度 2] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 count2
    • 選取 [停留時間 1] 字段,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 [DwellTime1]。
    • 選取 [Dwell Time 2] 字段,然後選取 [剖析遙測]的 [查看更多]。 然後選取 [DwellTime2]。

    選取儲存以儲存變更。 [ 佔用人數 ] 動作看起來像下列螢幕快照:

    顯示 Logic Apps 設計工具中佔用動作的螢幕快照。

邏輯應用程式會自動執行。 若要查看每個執行的狀態,請流覽至 Azure 入口網站 中邏輯應用程式的 [概觀] 頁面,然後選取 [執行歷程記錄]。 選取 [ 重新整理 ] 以更新執行清單。

建立 Power BI 儀表板

現在您已透過事件中樞從IoT Central應用程式流動遙測。 然後邏輯應用程式會剖析事件中樞訊息,並將其新增至 Power BI 串流數據集。 現在,您可以建立 Power BI 儀錶板,以可視化方式呈現遙測:

  1. 登入您的 Power BI 帳戶。
  2. 選取 [ > 工作區店內分析 - 結帳]。
  3. 選取 [+ 新增 > 儀錶板]。
  4. 輸入 市集分析 作為儀錶板名稱,然後選取 [ 建立]。

新增折線圖

新增四個折線圖圖格,以顯示兩個環境感測器的溫度和濕度。 使用下表中的資訊來建立磚。 若要新增每個磚,請從選取 [ 編輯 > 新增磚] 開始。 選取 [自定義串流數據],然後選取 [ 下一步]:

設定 圖表 #1 圖表 #2 圖表 #3 圖表 #4
資料集 區域1感測器 區域1感測器 區域 2 感測器 區域 2 感測器
視覺效果類型 折線圖 折線圖 折線圖 折線圖
Axis 時間戳記 時間戳記 時間戳記 時間戳記
溫度 溼度 溫度 溼度
時間範圍 60 分鐘 60 分鐘 60 分鐘 60 分鐘
標題 溫度 (1 小時) 濕度 (1 小時) 溫度 (1 小時) 濕度 (1 小時)
子標題 區域 1 區域 1 區域 2 區域 2

下列螢幕快照顯示第一張圖表的設定:

顯示Power B I儀錶板中折線圖定義的螢幕快照。

新增卡片以顯示環境數據

新增四個卡片磚,以顯示來自兩個環境感測器的最新溫度和濕度值。 使用下表中的資訊來建立磚。 若要新增每個磚,請從選取 [ 編輯 > 新增磚] 開始。 選取 [自定義串流數據],然後選取 [ 下一步]:

設定 卡片 #1 卡片 #2 卡片 #3 卡片 #4
資料集 區域1感測器 區域1感測器 區域 2 感測器 區域 2 感測器
視覺效果類型 卡片 卡片 卡片 卡片
欄位 溫度 溼度 溫度 溼度
標題 溫度 (華氏) 濕度 (%) 溫度 (華氏) 濕度 (%)
子標題 區域 1 區域 1 區域 2 區域 2

下列螢幕快照顯示第一張卡片的設定:

顯示 Power B I dashboard.tings 中卡片定義的螢幕快照。

新增磚以顯示結帳佔用量數據

新增四個卡片磚以顯示商店中兩次結帳的佇列長度和停留時間。 使用下表中的資訊來建立磚。 若要新增每個磚,請從選取 [ 編輯 > 新增磚] 開始。 選取 [自定義串流數據],然後選取 [ 下一步]:

設定 卡片 #1 卡片 #2 卡片 #3 卡片 #4
資料集 佔用率感測器 佔用率感測器 佔用率感測器 佔用率感測器
視覺效果類型 叢集柱形圖 叢集柱形圖 量測計 量測計
Axis 時間戳記 時間戳記 N/A N/A
停留時間 1 停留時間 2 佇列長度 1 佇列長度 2
時間範圍 60 分鐘 60 分鐘 N/A N/A
標題 停留時間 停留時間 佇列長度 佇列長度
子標題 結帳 1 結帳 2 結帳 1 結帳 2

重設大小並重新排列儀錶板上的磚,看起來像下列螢幕快照:

顯示 Power BI 儀錶板的螢幕快照,其中包含重設大小和重新排列的磚。

您可以新增一些圖形資源,以進一步自訂儀錶板:

顯示Power BI儀錶板具有其他圖形的螢幕快照。

清除資源

如果您已完成 IoT Central 應用程式,您可以登入應用程式並流覽至 [應用程式] 區段中的 [管理] 頁面來刪除該應用程式

如果您想要保留應用程式,但降低與其相關聯的成本,請停用將數據匯出傳送遙測至事件中樞。

您可以刪除名為 retail-store-analysis 的資源群組,以刪除 Azure 入口網站 中的事件中樞和邏輯應用程式。

您可以從工作區的Power BI 設定頁面刪除工作區,以刪除Power BI資料集和儀錶板。