轉換 IoT Central 應用程式內的資料以進行匯出

IoT 裝置會以各種格式傳送資料。 若要在 IoT 解決方案中使用裝置資料,您可能需要在裝置資料匯出至其他服務之前先轉換裝置資料。

本文說明如何在 IoT Central 應用程式中,將裝置資料轉換成資料匯出定義的一部分。

IoT Central 資料匯出定義中的轉換可讓您在裝置資料匯出至目的地之前,先操控裝置資料的格式和結構。 您可以在匯出定義中指定每個目的地的轉換。 每個訊息都會經過轉換,以建立匯出至目的地的輸出記錄。

使用轉換來重新建構 JSON 承載、重新命名欄位、篩選出欄位,以及對遙測值執行簡單的計算。 例如,使用轉換將訊息轉換成符合目的地結構描述的表格式格式,例如 Azure 資料總管資料表。

下列影片將為您介紹 IoT Central 資料轉換:

新增轉換

若要在資料匯出中新增目的地的轉換,請選取 [+ 轉換 ],如下列螢幕擷取畫面所示:

Screenshot that shows how to add a transformation to a destination.

[ 資料轉換 ] 面板可讓您指定轉換。 在 1 中。新增輸入訊息 區段,您可以輸入想要通過轉換的範例訊息。 您也可以選取裝置範本來產生範例訊息。 在 2 中。建置轉換查詢 區段,您可以輸入轉換輸入訊息的查詢。 3.預覽輸出訊息區 段會顯示轉換的結果:

Screenshot of transformation editor in IoT Central.

提示

如果您不知道輸入訊息的格式,請使用 . 作為查詢,將訊息匯出為 Webhook 之類的目的地。 然後將 Webhook 收到的訊息貼到 1。新增您的輸入訊息 。 然後建置轉換查詢,以將此訊息處理為所需的輸出格式。

建置轉換查詢

轉換引擎會使用開放原始碼 JQ JSON 處理器來重組和格式化 JSON 承載。 若要指定轉換,您可以撰寫 JQ 查詢,以使用 JQ 的內建篩選、函式和功能。 如需一些查詢範例,請參閱 轉換查詢 範例。 若要深入瞭解如何撰寫 JQ 查詢,請參閱 JQ 手冊

轉換前訊息結構

您可以從 IoT Central 匯出下列資料流程:遙測、屬性變更、裝置線上活動、裝置生命週期事件和裝置範本生命週期事件。 每種資料類型都有特定的結構,其中包含遙測值、應用程式資訊、裝置中繼資料和屬性值等資訊。

下列範例顯示遙測訊息的形狀。 這項資料都可供您的轉換使用。 訊息的結構與其他訊息類型類似,但有一些類型特定的欄位。 您可以使用 [ 新增輸入訊息 ] 功能,根據應用程式中的裝置範本產生範例訊息。

{
  "applicationId": "93d68c98-9a22-4b28-94d1-06625d4c3d0f",
  "device": {
    "id": "31edabe6-e0b9-4c83-b0df-d12e95745b9f",
    "name": "Scripted Device - 31edabe6-e0b9-4c83-b0df-d12e95745b9f",
    "cloudProperties": [],
    "properties": {
      "reported": [
        {
          "id": "urn:smartKneeBrace:Smart_Vitals_Patch_wr:FirmwareVersion:1",
          "name": "FirmwareVersion",
          "value": 1.0
        }
      ]
    },
    "templateId": "urn:sbq3croo:modelDefinition:nf7st1wn3",
    "templateName": "Smart Knee Brace"
  },
  "telemetry": [
      {
        "id": "urn:continuousPatientMonitoringTemplate:Smart_Knee_Brace_6wm:Acceleration:1",
        "name": "Acceleration",
        "value": {
          "x": 19.212770659918583,
          "y": 20.596296675217335,
          "z": 54.04859440697045
        }
      },
      {
        "id": "urn:continuousPatientMonitoringTemplate:Smart_Knee_Brace_6wm:RangeOfMotion:1",
        "name": "RangeOfMotion",
        "value": 110
      }
  ],
  "enqueuedTime": "2021-03-23T19:55:56.971Z",
  "enrichments": {
      "your-enrichment-key": "enrichment-value"
  },
  "messageProperties": {
      "prop1": "prop-value"
  },
  "messageSource": "telemetry"
}

提示

使用 IoT Central 應用程式 UI 中的新增輸入訊息 功能,以查看其他資料匯出類型的範例訊息結構,例如屬性變更。

轉換查詢範例

下列查詢範例會使用上一節中顯示的遙測訊息。

範例 1 :下列 JQ 查詢會將輸入訊息的每個遙測片段輸出為個別的輸出訊息:

.telemetry[]

JSON 輸出:

{
  "id": "urn:continuousPatientMonitoringTemplate:Smart_Knee_Brace_6wm:Acceleration:1",
  "name": "Acceleration",
  "value": {
    "x": 19.212770659918583,
    "y": 20.596296675217335,
    "z": 54.04859440697045
  }
},
{
  "id": "urn:continuousPatientMonitoringTemplate:Smart_Knee_Brace_6wm:RangeOfMotion:1",
  "name": "RangeOfMotion",
  "value": 110
}

提示

若要將輸出變更為具有遙測類型陣列的單一訊息,請使用 查詢 .telemetry

範例 2 :下列 JQ 查詢會將輸入遙測陣列轉換成具有遙測名稱作為索引鍵的物件:

.telemetry | map({ key: .name, value: .value }) | from_entries

JSON 輸出:

{
  "Acceleration": {
    "x": 19.212770659918583,
    "y": 20.596296675217335,
    "z": 54.04859440697045
  },
  "RangeOfMotion": 110
}

範例 3 :下列 JQ 查詢會 尋找 RangeOfMotion 遙測值,並使用公式 rad = degree * pi / 180 將它從度轉換成弧度。 此查詢也會示範如何匯入和使用 iotc 模組:

import "iotc" as iotc;
{
  rangeOfMotion: (
    .telemetry
    | iotc::find(.name == "RangeOfMotion").value
    | . * 3.14159265358979323846 / 180
  )
}

JSON 輸出:

{
  "rangeOfMotion": 1.9198621771937625
}

範例 4 :若要將輸入訊息操作成表格式,您可以將每個匯出的訊息對應到一或多個 資料列 。 資料列輸出會以邏輯方式表示為 JSON 物件,其中資料行名稱為索引鍵,而資料行值則是值:

{
    "<column 1 name>": "<column 1 value>",
    "<column 2 name>": "<column 2 value>",
    ...
}

提示

當您匯出至 Azure 資料總管時,請使用表格式格式。

下列 JQ 查詢會將資料列寫入資料表,以 儲存不同裝置上的 RangeOfMotion 遙測。 查詢會將裝置識別碼、排入佇列的時間和動作範圍對應到具有這些資料行的資料表中:

import "iotc" as iotc;
{
    deviceId: .deviceId,
    timestamp: .enqueuedTime,
    rangeOfMotion: .telemetry | iotc::find(.name == "RangeOfMotion").value
}

JSON 格式的輸出:

{
  "deviceId": "31edabe6-e0b9-4c83-b0df-d12e95745b9f",
  "timestamp": "2021-03-23T19:55:56.971Z",
  "rangeOfMotion": 110
}

IoT Central 模組

JQ 模組是自訂函式的集合。 在轉換查詢中,您可以匯入內建的 IoT Central 特定模組,其中包含函式,讓您更輕鬆地撰寫查詢。 若要匯入 IoT Central 模組,請使用下列指示詞:

import "iotc" as iotc;

IoT Central 模組包含下列功能:

find(expression):函 find 式可讓您尋找特定的陣列專案,例如承載中的遙測值或屬性專案。 函式輸入是陣列,而 參數會定義 JQ 篩選準則,以針對陣列中的每個元素執行。 函式會傳回篩選準則評估為 true 的每個陣列元素:

例如,若要尋找稱為 RangeOfMotion 的特定遙測值:

.telemetry | iotc::find(.name == "RangeOfMotion")

案例

下列案例會使用轉換功能來自訂特定目的地的裝置資料格式。

案例 1:將裝置資料匯出至 Azure 資料總管

在此案例中,您會轉換裝置資料以符合 Azure 資料總管中的固定架構,其中每個遙測值會顯示為數據表中的資料行,而每個資料列都代表單一訊息。 例如:

DeviceId 時間戳記 T1 T2 T3
「31edabe6-e0b9-4c83-b0df-d12e95745b9f」 「2021-03-23T19:55:56.971Z 1.18898 1.434709 2.97008

若要匯出與這個資料表相容的資料,每個匯出的訊息必須看起來像下列物件。 物件代表單一資料列,其中索引鍵是資料行名稱,而值是每個資料行中要放置的值:

{
    "Timestamp": <value-of-Timestamp>,
    "DeviceId": <value-of-deviceId>,
    "T1": <value-of-T1>,
    "T2": <value-of-T2>,
    "T3": <value-of-T3>,
}

在此案例中,裝置會在看起來像下列範例的輸入訊息中傳送 t1t2t3 遙測值:

{
  "applicationId": "c57fe8d9-d15d-4659-9814-d3cc38ca9e1b",
  "enqueuedTime": "1933-01-26T03:10:44.480001324Z",
  "messageSource": "telemetry",
  "telemetry": [
    {
      "id": "dtmi:temperaturesensor288:sensors1lr:t1;1",
      "name": "t1",
      "value": 1.1889838348731093e+308
    },
    {
      "id": "dtmi:temperaturesensor288:sensors1lr:t2;1",
      "name": "t2",
      "value": 1.4347093391531383e+308
    },
    {
      "id": "dtmi:temperaturesensor288:sensors1lr:t3;1",
      "name": "t3",
      "value": 2.9700885230380616e+307
    }
  ],
  "device": {
    "id": "oozrnl1zs857",
    "name": "haptic alarm",
    "templateId": "dtmi:modelDefinition:nhhbjotee:qytxnp8hi",
    "templateName": "hapticsensors",
    "properties": {
      "reported": []
    },
    "cloudProperties": [],
    "simulated": true,
    "approved": false,
    "blocked": false,
    "provisioned": true
  }
}

下列 JQ 查詢會 T1 輸出 、 T2T3 遙測值, Timestamp 以及 deviceId 做為符合 Azure 資料總管資料表架構之索引鍵/值組的訊息:

import "iotc" as iotc;
{
  deviceId: .device.id,
  Timestamp: .enqueuedTime,
  T1: .telemetry | iotc::find(.name == "t1").value,
  T2: .telemetry | iotc::find(.name == "t2").value,
  T3: .telemetry | iotc::find(.name == "t3").value,
}

JSON 輸出:

{
  "T1": 1.1889838348731093e+308,
  "T2": 1.4347093391531383e+308,
  "T3": 2.9700885230380616e+307,
  "Timestamp": "1933-01-26T03:10:44.480001324Z",
  "deviceId": "oozrnl1zs857"
}

若要深入瞭解如何將 Azure 資料總管叢集和資料庫新增為匯出目的地,請參閱 建立 Azure 資料總管目的地

案例 2:中斷遙測陣列

在此案例中,裝置會在一則訊息中傳送下列遙測陣列:

{
  "applicationId": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "enqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "messageSource": "telemetry",
  "telemetry": [
    {
      "id": "dtmi:sample1:data;1",
      "name": "data",
      "value": [
        {
          "id": "subdevice1",
          "values": {
              "running": true,
              "cycleCount": 2315
          }
        },
        {
          "id": "subdevice2",
          "values": {
              "running": false,
              "cycleCount": 824567
          }
        }
      ]
    },
    {
      "id": "dtmi:sample1:parentStatus;1",
      "name": "parentStatus",
      "value": "healthy"
    }
  ],
  "device": {
    "id": "9xwhr7khkfri",
    "name": "wireless port",
    "templateId": "dtmi:hpzy1kfcbt2:umua7dplmbd",
    "templateName": "Smart Vitals Patch",
    "properties": {
      "reported": [
        {
          "id": "dtmi:sample1:prop;1",
          "name": "Connectivity",
          "value": "Tenetur ut quasi minus ratione voluptatem."
        }
      ]
    },
    "cloudProperties": [],
    "simulated": true,
    "approved": true,
    "blocked": false,
    "provisioned": false
  }
}

您想要轉換此裝置資料以符合下表架構:

cycleCount deviceId enqueuedTime parentStatus 執行中 subdeviceId
2315 「9xwhr7khkfri」 「1909-10-10T07:11:56.078161042Z」 「狀況良好」 true 「subdevice1」
824567 「9xwhr7khkfri」 「1909-10-10T07:11:56.078161042Z」 「狀況良好」 false 「subdevice2」

下列 JQ 查詢會為訊息中的每個子裝置專案建立個別的輸出訊息,並包含基底訊息和父裝置中的一些常見資訊。 此查詢會將輸出扁平化,並將您資料中以單一訊息的形式分割出邏輯區隔:

import "iotc" as iotc;
{
    enqueuedTime: .enqueuedTime,
    deviceId: .device.id,
    parentStatus: .telemetry | iotc::find(.name == "parentStatus").value
} + (
    .telemetry
    | iotc::find(.name == "data").value[]
    | {
        subdeviceId: .id,
        running: .values.running,
        cycleCount: .values.cycleCount
    }
)

JSON 輸出:

{
    "cycleCount": 2315,
    "deviceId": "9xwhr7khkfri",
    "enqueuedTime": "1909-10-10T07:11:56.078161042Z",
    "parentStatus": "healthy",
    "running": true,
    "subdeviceId": "subdevice1"
},
{
    "cycleCount": 824567,
    "deviceId": "9xwhr7khkfri",
    "enqueuedTime": "1909-10-10T07:11:56.078161042Z",
    "parentStatus": "healthy",
    "running": false,
    "subdeviceId": "subdevice2"
}

案例 3:Power BI 串流

Power BI 即時串流功能可讓您在儀表板中以低延遲即時更新的資料。 若要深入瞭解,請參閱 Power BI 中的即時串流。

若要搭配 Power BI 串流使用 IoT Central,請設定 Webhook 匯出,以特定格式傳送要求主體。 此範例假設您有具有下列架構的 Power BI 串流資料集:


  {
    "bloodPressureDiastolic": 161438124,
    "bloodPressureSystolic": -966387879,
    "deviceId": "9xwhr7khkfri",
    "deviceName": "wireless port",
    "heartRate": -633994413,
    "heartRateVariability": -37514094,
    "respiratoryRate": 1582211310,
    "timestamp": "1909-10-10T07:11:56.078161042Z"
  }

若要建立 Webhook 匯出目的地,您需要 Power BI 串流資料集的 REST API URL 端點。

在此案例中,裝置會傳送類似下列範例的遙測訊息:

{
  "applicationId": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "enqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "messageSource": "telemetry",
  "telemetry": [
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:HeartRate;1",
      "name": "HeartRate",
      "value": -633994413
    },
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:RespiratoryRate;1",
      "name": "RespiratoryRate",
      "value": 1582211310
    },
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:HeartRateVariability;1",
      "name": "HeartRateVariability",
      "value": -37514094
    },
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:BodyTemperature;1",
      "name": "BodyTemperature",
      "value": 5.323322666478241e+307
    },
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:FallDetection;1",
      "name": "FallDetection",
      "value": "Earum est nobis at voluptas id qui."
    },
    {
      "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:BloodPressure;1",
      "name": "BloodPressure",
      "value": {
        "Diastolic": 161438124,
        "Systolic": -966387879
      }
    }
  ],
  "device": {
    "id": "9xwhr7khkfri",
    "name": "wireless port",
    "templateId": "dtmi:hpzy1kfcbt2:umua7dplmbd",
    "templateName": "Smart Vitals Patch",
    "properties": {
      "reported": [
        {
          "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_wr:DeviceStatus;1",
          "name": "DeviceStatus",
          "value": "Id optio iste vero et neque sit."
        }
      ]
    },
    "cloudProperties": [],
    "simulated": true,
    "approved": true,
    "blocked": false,
    "provisioned": false
  }
}

下列 JQ 查詢會將輸入訊息轉換成適合 Webhook 的格式,以傳送至 Power BI 串流資料集。 此範例包含篩選準則,僅輸出特定裝置範本的訊息。 您可以使用資料匯出篩選功能依裝置範本進行篩選:

import "iotc" as iotc;
if .device.templateId == "dtmi:hpzy1kfcbt2:umua7dplmbd" then 
    {
        deviceId: .device.id,
        timestamp: .enqueuedTime,
        deviceName: .device.name,
        bloodPressureSystolic: .telemetry | iotc::find(.name == "BloodPressure").value.Systolic,
        bloodPressureDiastolic: .telemetry | iotc::find(.name == "BloodPressure").value.Diastolic,
        heartRate: .telemetry | iotc::find(.name == "HeartRate").value,
        heartRateVariability: .telemetry | iotc::find(.name == "HeartRateVariability").value,
        respiratoryRate: .telemetry | iotc::find(.name == "RespiratoryRate").value
    }
else
    empty
end

JSON 輸出:

{
  "bloodPressureDiastolic": 161438124,
  "bloodPressureSystolic": -966387879,
  "deviceId": "9xwhr7khkfri",
  "deviceName": "wireless port",
  "heartRate": -633994413,
  "heartRateVariability": -37514094,
  "respiratoryRate": 1582211310,
  "timestamp": "1909-10-10T07:11:56.078161042Z"
}

案例 4:將資料匯出至 Azure 資料總管,並在 Power BI 中將其視覺化

在此案例中,您會將資料匯出至 Azure 資料總管,然後使用連接器將資料視覺化 Power BI 中的資料。 若要深入瞭解如何將 Azure 資料總管叢集和資料庫新增為匯出目的地,請參閱 建立 Azure 資料總管目的地

此案例使用具有下列架構的 Azure 資料總管資料表:

.create table smartvitalspatch (
  EnqueuedTime:datetime,
  Message:string,
  Application:string,
  Device:string,
  Simulated:boolean,
  Template:string,
  Module:string,
  Component:string,
  Capability:string,
  Value:dynamic
)

在此案例中,裝置會傳送類似下列範例的遙測訊息:

{
    "applicationId": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
    "enqueuedTime": "1909-10-10T07:11:56.078161042Z",
    "messageSource": "telemetry",
    "telemetry": [
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:HeartRate;1",
            "name": "HeartRate",
            "value": -633994413
        },
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:RespiratoryRate;1",
            "name": "RespiratoryRate",
            "value": 1582211310
        },
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:HeartRateVariability;1",
            "name": "HeartRateVariability",
            "value": -37514094
        },
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:BodyTemperature;1",
            "name": "BodyTemperature",
            "value": 5.323322666478241e+307
        },
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:FallDetection;1",
            "name": "FallDetection",
            "value": "Earum est nobis at voluptas id qui."
        },
        {
            "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_37p:BloodPressure;1",
            "name": "BloodPressure",
            "value": {
                "Diastolic": 161438124,
                "Systolic": -966387879
            }
        }
    ],
    "device": {
        "id": "9xwhr7khkfri",
        "name": "wireless port",
        "templateId": "dtmi:hpzy1kfcbt2:umua7dplmbd",
        "templateName": "Smart Vitals Patch",
        "properties": {
            "reported": [
                {
                    "id": "dtmi:smartVitalsPatch:Smart_Vitals_Patch_wr:DeviceStatus;1",
                    "name": "DeviceStatus",
                    "value": "Id optio iste vero et neque sit."
                }
            ]
        },
        "cloudProperties": [],
        "simulated": true,
        "approved": true,
        "blocked": false,
        "provisioned": false
    }
}

下列 JQ 查詢會將輸入訊息轉換成每個遙測值的個別輸出訊息。 此轉換會產生符合 Azure 資料總管資料表架構的輸出。 轉換會使用 entity-attribute-value 架構,其中每個資料列都會保存單一遙測值,而遙測的名稱是相同資料列中個別資料行中的值:

. as $in | .telemetry[] | {
  EnqueuedTime: $in.enqueuedTime,
  Message: $in.messageId,
  Application: $in.applicationId,
  Device: $in.device.id,
  Simulated: $in.device.simulated,
  Template: ($in.device.templateName // ""),
  Module: ($in.module // ""),
  Component: ($in.component // ""),
  Capability: .name,
  Value: .value
}

JSON 輸出:

{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "HeartRate",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": -633994413
},
{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "RespiratoryRate",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": 1582211310
},
{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "HeartRateVariability",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": -37514094
},
{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "BodyTemperature",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": 5.323322666478241e+307
},
{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "FallDetection",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": "Earum est nobis at voluptas id qui."
},
{
  "Application": "570c2d7b-d72e-4ad1-aaf4-ad9b727daa47",
  "Capability": "BloodPressure",
  "Component": "",
  "Device": "9xwhr7khkfri",
  "EnqueuedTime": "1909-10-10T07:11:56.078161042Z",
  "Message": null,
  "Module": "",
  "Simulated": true,
  "Template": "Smart Vitals Patch",
  "Value": {
      "Diastolic": 161438124,
      "Systolic": -966387879
  }
}

輸出資料會匯出至您的 Azure 資料總管叢集。 若要在 Power BI 中視覺化匯出的資料,請完成下列步驟:

  1. 安裝 Power BI 應用程式。 您可以從資料將傳統型 Power BI 應用程式從 Go 下載到使用 Power BI Desktop 的深入解析,以採取動作。
  2. 從 GitHub 下載 Power BI Desktop IoT Central ADX 連線or.pbit 檔案。
  3. 使用 Power BI Desktop 應用程式開啟您在上一個步驟中下載的 IoT Central ADX 連線or.pbit 檔案。 出現提示時,請輸入您先前記下的 Azure 資料總管叢集、資料庫和資料表資訊。

現在您可以將 Power BI 中的資料視覺化:

Screenshot of Power BI report that shows data from IoT Central.

下一步

既然您已瞭解如何在 IoT Central 中轉換資料,建議的下一個步驟是瞭解如何 在 IoT Central 中流量分析。