共用方式為


教學課程:從 Azure IoT Central 匯出資料,並在 Power BI 中視覺化深入解析

在前面的兩個教學課程中,您使用 店內分析 - 結帳 應用程式範本來建立和自訂 IoT Central 應用程式。 在本教學課程中,您會設定 IoT Central 應用程式,以匯出從裝置收集的遙測。 然後,您可以使用 Power BI 為商店經理建立客製化儀錶板,以視覺化從遙測中衍生出的洞察。

在本教學課程中,您將瞭解如何:

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

先決條件

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

建立資源群組

建立事件中樞和邏輯應用程式之前,您必須先建立資源群組來管理它們。 資源群組應該與 In-store analytics - checkout IoT Central 應用程式位於相同的位置。 若要建立資源群組:

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

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

建立事件中樞

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

  1. 在 Azure 入口網站中,選取畫面左上方的 [ 建立資源 ]。
  2. [搜尋市集] 中,輸入 Event Hubs,然後按 Enter
  3. [事件中樞] 頁面上,選取 [建立]。
  4. [建立命名空間 ] 頁面上,執行下列步驟:
    • 輸入命名空間的唯一名稱,例如 yourname-retail-store-analysis。 系統會檢查此名稱是否可用。
    • 選擇 基本 定價層。
    • 選取您用來建立 IoT Central 應用程式的相同 訂用帳戶
    • 選取 retail-store-analysis 資源群組。
    • 選取您用於 IoT Central 應用程式的相同位置。
    • 選取 ,創建。 您可能需要等待幾分鐘,才能讓系統佈建資源。
  5. 在入口網站中,流覽至 retail-store-analysis 資源群組。 等候部署完成。 您可能需要選取 [重新整理] 來更新部署狀態。 您也可以在 [通知] 中檢查事件中樞命名空間建立的狀態。
  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. 輸入 Store data event hub 作為 目的地名稱
  8. 選取 [Azure 事件中樞] 作為目的地類型。
  9. 選取 [連接字串] 作為授權類型。
  10. 貼上您在建立事件中樞時儲存之 SendPolicy 的連接字串。
  11. 輸入 store-telemetry 作為 事件中樞
  12. 選取 [建立],然後選取 [儲存]。
  13. 在 [ 遙測匯出 ] 頁面上,等候匯出狀態變更為 [狀況良好]。

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

建立 Power BI 資料集

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

  1. 登入您的 Power BI 帳戶。

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

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

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

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

  6. 輸入 Zone 1 sensor 作為 資料集名稱

  7. 在下表中輸入三個 串流中的值

    值名稱 值類型
    時間戳 DateTime
    溼度 Number
    溫度 Number
  8. 開啟 [歷史資料分析]。

  9. 選取 建立,然後選取 完成

  10. 建立另一個稱為 區域 2 感應器的 串流資料集,其結構描述和設定與 區域 1 感應器 串流資料集相同。

您現在有兩個串流資料集。 邏輯應用程式會將來自連接至您 店內分析 - 結帳系統 應用程式的兩個環境感應器的遙測數據路由到這兩個資料集:

螢幕擷取畫面,顯示 Power B I 中的區域一感應器資料集定義。

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

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

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

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

  3. 輸入 Occupancy sensor 作為 資料集名稱

  4. 在下表中輸入五個來自串流的值

    值名稱 值類型
    時間戳 DateTime
    佇列長度 1 Number
    佇列長度 2 Number
    停留時間 1 Number
    停留時間 2 Number
  5. 開啟 [歷史資料分析]。

  6. 選取 建立,然後選取 完成

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

螢幕擷取畫面顯示 Power B I 中的佔用資料集定義。

建立邏輯應用程式

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

建立邏輯應用程式之前,您需要在 建立和部署店內分析應用程式範本 教學課程中連線至 IoT Central 應用程式的兩個 RuuviTag 感應器的裝置識別碼:

  1. 登入您的 店內分析 - 結帳 IoT Central 應用程式。
  2. 選取左窗格中的 裝置 。 然後選取 RuuviTag
  3. 記下 裝置 ID。 在下列螢幕擷取畫面中,標識碼為 8r6vfyiv1x1rvfk4ymk6z

螢幕擷取畫面,顯示 IoT Central 應用程式中裝置清單中的裝置識別碼。

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

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

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

  1. 取代 "actions": {}, 為下列 JSON。 然後將兩個佔位符[YOUR RUUVITAG DEVICE ID 1][YOUR RUUVITAG DEVICE ID 2]替換為兩個 RuuviTag 裝置的 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": {
                                "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. 選取 [依裝置識別碼切換] 以展開動作。 然後選取 區域 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 和停留 時間 2 欄位。
    • 選取 時間戳記 欄位,然後從 動態內容 清單中選取 enqueuedTime
    • 選取 [佇列長度 1] 欄位,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 count1
    • 選取 [佇列長度 2] 欄位,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 count2
    • 選取 [停留時間 1] 欄位,然後選取 [剖析遙測] 旁的 [查看更多]。 然後選取 DwellTime1
    • 選取 [停留時間 2] 欄位,然後在 [解析遙測] 旁選取 [查看更多]。 然後選取 DwellTime2

    選取儲存以儲存變更。 Occupancy 動作如下所示:

    螢幕擷取畫面顯示 Logic Apps 設計工具中的佔用動作。

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

建立 Power BI 儀錶板

現在,您有從 IoT Central 應用程式透過事件中樞傳輸的遙測資料。 然後,您的邏輯應用程式會剖析事件中樞訊息,並將其新增至 Power BI 串流資料集。 現在,您可以建立 Power BI 儀錶板來視覺化遙測:

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

新增折線圖

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

Setting 圖表 #1 圖表 #2 圖表 #3 圖表 #4
Dataset 區域 1 感測器 區域 1 感測器 區域 2 感測器 區域 2 感測器
視覺化類型 折線圖 折線圖 折線圖 折線圖
時間戳 時間戳 時間戳 時間戳
價值觀 溫度 溼度 溫度 溼度
時間範圍 60 Minuten 60 Minuten 60 Minuten 60 Minuten
Title 溫度(1小時) 濕度(1小時) 溫度(1小時) 濕度(1小時)
副標題 區域 1 區域 1 區域 2 區域 2

下列螢幕擷取畫面顯示第一個圖表的設定:

螢幕擷取畫面,顯示 Power B I 儀錶板中的折線圖定義。

新增卡片以顯示環境資料

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

Setting 卡片 #1 卡片 #2 卡片 #3 卡片 #4
Dataset 區域 1 感測器 區域 1 感測器 區域 2 感測器 區域 2 感測器
視覺化類型 Card Card Card Card
Fields 溫度 溼度 溫度 溼度
Title 溫度 (F) 濕度 (%) 溫度 (F) 濕度 (%)
副標題 區域 1 區域 1 區域 2 區域 2

下列螢幕擷取畫面顯示第一張卡片的設定:

螢幕擷取畫面顯示 Power B I dashboard.tings 中的卡片定義。

新增圖磚以顯示結帳區佔用資料

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

Setting 卡片 #1 卡片 #2 卡片 #3 卡片 #4
Dataset 佔用感應器 佔用感應器 佔用感應器 佔用感應器
視覺化類型 叢集直條圖 叢集直條圖 量測計 量測計
時間戳 時間戳 N/A N/A
價值觀 停留時間 1 停留時間 2 佇列長度 1 佇列長度 2
時間範圍 60 Minuten 60 Minuten N/A N/A
Title 停留時間 停留時間 佇列長度 佇列長度
副標題 結帳 1 結帳 2 結帳 1 結帳 2

調整儀表板上的磚大小並重新排列,使其看起來像下列螢幕擷取畫面:

螢幕擷取畫面顯示具有已調整大小和重新排列磚的 Power BI 儀表板。

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

螢幕擷取畫面,顯示具有其他圖形的 Power BI 儀錶板。

清理資源

完成 IoT Central 應用程式之後,您可以登入應用程式,然後流覽至 [應用程式] 區段中的 [管理] 頁面,以將其刪除。

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

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

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