Share via


Adatok átalakítása az IoT Central-alkalmazásban exportáláshoz

Az IoT-eszközök különböző formátumban küldenek adatokat. Az eszközadatok IoT-megoldásban való használatához előfordulhat, hogy át kell alakítania az eszköz adatait, mielőtt más szolgáltatásokba exportálná azokat.

Ez a cikk bemutatja, hogyan alakíthatja át az eszközadatokat egy adatexportálási definíció részeként egy IoT Central-alkalmazásban.

Az IoT Central adatexportálási definíciójának átalakításával módosíthatja az eszközadatok formátumát és szerkezetét, mielőtt azokat egy célhelyre exportálja. Az exportálási definíciókban minden célhoz megadhat átalakítást. Minden üzenet áthalad az átalakításon, és létrehoz egy kimeneti rekordot, amelyet exportál a célhelyre.

Átalakításokkal strukturálhatja a JSON hasznos adatait, átnevezheti a mezőket, szűrheti a mezőket, és egyszerű számításokat futtathat a telemetriai értékeken. Egy átalakítással például táblázatos formátumba alakíthatja az üzeneteket, amely megfelel egy célséma, például egy Azure Data Explorer-tábla sémájának.

Az alábbi videó bemutatja az IoT Central adatátalakításait:

Átalakítás hozzáadása

Ha transzformációt szeretne hozzáadni egy célhelyhez az adatexportáláshoz, válassza az + Átalakítás lehetőséget az alábbi képernyőképen látható módon:

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

Az Adatátalakítás panelen megadhatja az átalakítást. Az 1-ben. Adja hozzá a bemeneti üzenet szakaszt, és megadhat egy mintaüzenetet, amelyet át szeretne adni az átalakításon. Egy eszközsablon kiválasztásával mintaüzenetet is létrehozhat. A 2-ben. Átalakítási lekérdezés összeállítása szakasz, megadhatja a bemeneti üzenetet átalakító lekérdezést. A 3-at. Az előzetes verziójú kimeneti üzenetek szakasz az átalakítás eredményét mutatja be:

Screenshot of transformation editor in IoT Central.

Tipp.

Ha nem ismeri a bemeneti üzenet formátumát, lekérdezésként használva . exportálhatja az üzenetet egy célhelyre, például egy webhookba. Ezután illessze be a webhook által fogadott üzenetet az 1-be . Adja hozzá a bemeneti üzenetet. Ezután hozzon létre egy átalakító lekérdezést, amely feldolgozza ezt az üzenetet a kívánt kimeneti formátumba.

Átalakítási lekérdezés létrehozása

Az átalakító motor a nyílt forráskódú JQ JSON-processzorral strukturálja és formázza a JSON hasznos adatait. Átalakítás megadásához JQ-lekérdezést kell írnia, amely a JQ beépített szűrőit, funkcióit és funkcióit használhatja. Néhány lekérdezési példa: Példa átalakítási lekérdezések. A JQ-lekérdezések írásával kapcsolatos további információkért tekintse meg a JQ-kézikönyvet.

Az átalakítás előtti üzenetstruktúra

Az alábbi adatfolyamokat exportálhatja az IoT Centralból: telemetriai adatok, tulajdonságváltozások, eszközkapcsolati események, eszközéletciklus-események és eszközsablonok életciklus-eseményei. Minden adattípus egy adott struktúrával rendelkezik, amely olyan információkat tartalmaz, mint a telemetriai értékek, az alkalmazásadatok, az eszköz metaadatai és a tulajdonságértékek.

Az alábbi példa a telemetriai üzenet alakját mutatja be. Ezek az adatok mind elérhetők az átalakításhoz. Az üzenet szerkezete hasonló más üzenettípusokhoz, de vannak típusspecifikus mezők. A bemeneti üzenet hozzáadása funkcióval mintaüzenetet hozhat létre az alkalmazásban lévő eszközsablon alapján.

{
  "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"
}

Tipp.

A bemeneti üzenet hozzáadása funkcióval az IoT Central alkalmazás felhasználói felületén megtekintheti az egyéb adatexportálási típusok mintaüzenet-struktúráit, például a tulajdonságmódosításokat.

Példa átalakítási lekérdezésekre

Az alábbi lekérdezési példák az előző szakaszban látható telemetriai üzenetet használják.

1. példa: A következő JQ-lekérdezés a bemeneti üzenet minden telemetriáját külön kimeneti üzenetként adja ki:

.telemetry[]

JSON-kimenet:

{
  "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
}

Tipp.

Ha a kimenetet egyetlen üzenetre szeretné módosítani telemetriai típusok tömbjével, használja a lekérdezést .telemetry.

2. példa: A következő JQ-lekérdezés kulcsként telemetrianeveket tartalmazó objektummá alakítja a bemeneti telemetriai tömböt:

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

JSON-kimenet:

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

3. példa: A következő JQ-lekérdezés megkeresi a RangeOfMotion telemetriai értékét, és fokról radiánra konvertálja a képlet használatával rad = degree * pi / 180. Ez a lekérdezés azt is bemutatja, hogyan importálhatja és használhatja a modult iotc :

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

JSON-kimenet:

{
  "rangeOfMotion": 1.9198621771937625
}

4. példa: Ha táblázatos formátumba szeretné módosítani a bemeneti üzenetet, az egyes exportált üzeneteket egy vagy több sorba képezheti le. A sorkimenet logikailag JSON-objektumként jelenik meg, ahol az oszlop neve a kulcs, az oszlop értéke pedig az érték:

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

Tipp.

Táblázatos formátum használata az Azure Data Explorerbe való exportáláskor.

A következő JQ-lekérdezés sorokat ír egy táblába, amely a rangeOfMotion telemetriát tárolja különböző eszközökön. A lekérdezés leképezi az eszközazonosítót, a lekérdezett időt és a mozgástartományt egy táblázatba az alábbi oszlopokkal:

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

Kimenet JSON formátumban:

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

IoT Central-modul

A JQ-modul egyéni függvények gyűjteménye. Az átalakítási lekérdezés részeként importálhat egy beépített, függvényeket tartalmazó IoT Central-modult, amely megkönnyíti a lekérdezések írását. Az IoT Central modul importálásához használja a következő irányelvet:

import "iotc" as iotc;

Az IoT Central modul a következő függvényeket tartalmazza:

find(expression): A find függvény segítségével megkereshet egy adott tömbelemet, például telemetriai értéket vagy tulajdonságbejegyzést a hasznos adatban. A függvény bemenete egy tömb, és a paraméter egy JQ-szűrőt határoz meg, amely a tömb egyes elemein fut. A függvény azokat a tömbelemeket adja vissza, ahol a szűrő igaz értéket ad vissza:

Például egy adott telemetriaérték megkereséséhez:RangeOfMotion

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

Forgatókönyvek

Az alábbi forgatókönyvek az átalakítás funkcióval szabják testre az eszköz adatformátumát egy adott célhelyen.

1. forgatókönyv: Eszközadatok exportálása az Azure Data Explorerbe

Ebben a forgatókönyvben az eszközadatokat úgy alakítja át, hogy megfeleljenek az Azure Data Explorer rögzített sémájának, ahol minden telemetriai érték oszlopként jelenik meg a táblázatban, és minden sor egyetlen üzenetet jelöl. Például:

Deviceid Timestamp T1 T2 T3
"31edabe6-e0b9-4c83-b0df-d12e95745b9f" "2021-03-23T19:55:56.971Z 1.18898 1.434709 2.97008

A táblázattal kompatibilis adatok exportálásához minden exportált üzenetnek az alábbi objektumhoz hasonlóan kell kinéznie. Az objektum egyetlen sort jelöl, ahol a kulcsok oszlopnevek, az értékek pedig az egyes oszlopokban elhelyezendő értékek:

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

Ebben a forgatókönyvben az eszköz a t1következő példához hasonló bemeneti üzenetben küldi el a , t2és t3 a telemetriai értékeket:

{
  "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
  }
}

Az alábbi JQ-lekérdezés az T1T2T3 Azure Data Explorer táblázatsémájának megfelelő kulcs-érték párokkal adja ki a telemetria és a TimestampdeviceId telemetria értékeit:

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-kimenet:

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

Az Azure Data Explorer-fürtök és -adatbázisok exportálási célként való hozzáadásáról további információt az Azure Data Explorer-célhely létrehozása című témakörben talál.

2. forgatókönyv: Telemetriai tömb szétbontása

Ebben a forgatókönyvben az eszköz a következő telemetriai tömböt küldi el egy üzenetben:

{
  "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
  }
}

Az eszköz adatait az alábbi táblázatsémának megfelelően szeretné átalakítani:

cycleCount deviceId enqueuedTime parentStatus fut subdeviceId
2315 "9xwhr7khkfri" "1909-10-10T07:11:56.078161042Z" "egészséges" true "subdevice1"
824567 "9xwhr7khkfri" "1909-10-10T07:11:56.078161042Z" "egészséges" false "subdevice2"

Az alábbi JQ-lekérdezés külön kimeneti üzenetet hoz létre az üzenet minden egyes részadat-bejegyzéséhez, és tartalmaz néhány általános információt az alapüzenetből és a szülőeszközről. Ez a lekérdezés felsimítja a kimenetet, és elválasztja az egyetlen üzenetként érkezett adatok logikai osztásait:

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-kimenet:

{
    "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. forgatókönyv: Power BI-streamelés

A Power BI valós idejű streamelési funkciójával alacsony késéssel, valós időben frissített irányítópulton tekintheti meg az adatokat. További információ: Valós idejű streamelés a Power BI-ban.

Ha az IoT Centralt a Power BI Streaming szolgáltatással szeretné használni, állítson be egy webhook-exportálást, amely egy adott formátumban küldi el a kérelemtörzseket. Ez a példa feltételezi, hogy a Power BI Streaming-adatkészlet a következő sémával rendelkezik:


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

A webhook exportálási célhelyének létrehozásához szükség van a REST API URL-végpontra a Power BI streamelési adatkészletéhez.

Ebben a forgatókönyvben az eszköz az alábbi példához hasonló telemetriai üzeneteket küld:

{
  "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
  }
}

A következő JQ-lekérdezés átalakítja a bemeneti üzenetet a webhook számára a Power BI streamelési adatkészletbe való küldéséhez. Ez a példa egy szűrőfeltételt tartalmaz, amely csak egy adott eszközsablonhoz tartozó üzeneteket ad ki. Az adatexportálási szűrő funkcióval eszközsablon alapján szűrhet:

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-kimenet:

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

4. forgatókönyv: Adatok exportálása az Azure Data Explorerbe és vizualizáció a Power BI-ban

Ebben a forgatókönyvben adatokat exportál az Azure Data Explorerbe, majd egy összekötő használatával vizualizálja az adatokat a Power BI-ban. Az Azure Data Explorer-fürtök és -adatbázisok exportálási célként való hozzáadásáról további információt az Azure Data Explorer-célhely létrehozása című témakörben talál.

Ez a forgatókönyv egy Azure Data Explorer-táblát használ a következő sémával:

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

Ebben a forgatókönyvben az eszköz az alábbi példához hasonló telemetriai üzeneteket küld:

{
    "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
    }
}

Az alábbi JQ-lekérdezés minden telemetriaértékhez külön kimeneti üzenetté alakítja a bemeneti üzenetet. Ez az átalakítás olyan kimenetet hoz létre, amely megfelel az Azure Data Explorer táblázatsémának. Az átalakítás egy entitásattribútum-érték sémát használ, amelyben minden sor egyetlen telemetriai értéket tartalmaz, a telemetria neve pedig egy másik oszlopban lévő érték ugyanabban a sorban:

. 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-kimenet:

{
  "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
  }
}

A kimeneti adatok exportálása az Azure Data Explorer-fürtbe történik. Az exportált adatok Power BI-ban való megjelenítéséhez hajtsa végre a következő lépéseket:

  1. Telepítse a Power BI-alkalmazást. Az asztali Power BI-alkalmazást az adatoktól az elemzésekig és a Power BI Desktoppal végzett műveletekig letöltheti az asztali Power BI-alkalmazásból.
  2. Töltse le a Power BI desktop IoT Central ADX Csatlakozás or.pbit fájlt a GitHubról.
  3. A Power BI Desktop alkalmazással nyissa meg az előző lépésben letöltött IoT Central ADX-Csatlakozás or.pbit fájlt. Amikor a rendszer kéri, adja meg a korábban jegyzett Azure Data Explorer-fürt, adatbázis és táblaadatokat.

Most már vizualizálhatja az adatokat a Power BI-ban:

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

Következő lépések

Most, hogy már tudja, hogyan alakíthatja át az adatokat az IoT Centralban, javasolt következő lépés az elemzések használata az IoT Centralban.