Gegevens transformeren in uw IoT Central-toepassing voor export

IoT-apparaten verzenden gegevens in verschillende indelingen. Als u de apparaatgegevens in uw IoT-oplossing wilt gebruiken, moet u mogelijk uw apparaatgegevens transformeren voordat deze naar andere services worden geëxporteerd.

In dit artikel leest u hoe u apparaatgegevens transformeert als onderdeel van een definitie voor gegevensexport in een IoT Central-toepassing.

Met transformaties in een IoT Central-definitie voor gegevensexport kunt u de indeling en structuur van de apparaatgegevens bewerken voordat deze naar een bestemming worden geëxporteerd. U kunt een transformatie opgeven voor elke bestemming in een exportdefinitie. Elk bericht doorloopt de transformatie om een uitvoerrecord te maken die naar het doel wordt geëxporteerd.

Gebruik transformaties om JSON-nettoladingen te herstructureren, de naam van velden te wijzigen, velden te filteren en eenvoudige berekeningen uit te voeren op telemetriewaarden. Gebruik bijvoorbeeld een transformatie om uw berichten te converteren naar een tabelindeling die overeenkomt met het schema van een bestemming, zoals een Azure Data Explorer-tabel.

In de volgende video maakt u kennis met ioT Central-gegevenstransformaties:

Een transformatie toevoegen

Als u een transformatie wilt toevoegen voor een bestemming in uw gegevensexport, selecteert u + Transformeren , zoals wordt weergegeven in de volgende schermopname:

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

In het deelvenster Gegevenstransformatie kunt u de transformatie opgeven. In de 1. Voeg de sectie invoerbericht toe. U kunt een voorbeeldbericht invoeren dat u door de transformatie wilt doorgeven. U kunt ook een voorbeeldbericht genereren door een apparaatsjabloon te selecteren. In de 2. Bouw de sectie Transformatiequery , u kunt de query invoeren waarmee het invoerbericht wordt getransformeerd. De 3. In de sectie Voorbeeld van uitvoerberichten ziet u het resultaat van de transformatie:

Screenshot of transformation editor in IoT Central.

Fooi

Als u de indeling van het invoerbericht niet weet, gebruikt . u deze als query om het bericht te exporteren naar een bestemming zoals een webhook. Plak vervolgens het bericht dat door de webhook is ontvangen in 1. Voeg uw invoerbericht toe. Bouw vervolgens een transformatiequery om dit bericht te verwerken in de vereiste uitvoerindeling.

Een transformatiequery maken

De transformatie-engine maakt gebruik van de opensource JQ JSON-processor om JSON-nettoladingen te herstructureren en op te maken. Als u een transformatie wilt opgeven, schrijft u een JQ-query, die de ingebouwde filters, functies en functies van JQ kan gebruiken. Zie Voorbeeldtransformatiequery's voor enkele queryvoorbeelden. Zie de JQ-handleiding voor meer informatie over het schrijven van JQ-query's.

Berichtstructuur vóór transformatie

U kunt de volgende gegevensstromen exporteren uit IoT Central: telemetrie, wijzigingen in eigenschappen, apparaatconnectiviteitsevenementen, gebeurtenissen voor de levenscyclus van apparaten en gebeurtenissen voor de levenscyclus van apparaatsjablonen. Elk type gegevens heeft een specifieke structuur met informatie zoals telemetriewaarden, toepassingsgegevens, metagegevens van apparaten en eigenschapswaarden.

In het volgende voorbeeld ziet u de vorm van telemetrieberichten. Al deze gegevens zijn beschikbaar voor uw transformatie. De structuur van het bericht is vergelijkbaar voor andere berichttypen, maar er zijn enkele typespecifieke velden. U kunt de functie Uw invoerbericht toevoegen gebruiken om een voorbeeldbericht te genereren op basis van een apparaatsjabloon in uw toepassing.

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

Fooi

Gebruik de functie Uw invoerbericht toevoegen in de gebruikersinterface van de IoT Central-toepassing om voorbeeldberichtstructuren te zien voor andere gegevensexporttypen, zoals wijzigingen in eigenschappen.

Voorbeeld van transformatiequery's

In de volgende queryvoorbeelden wordt het telemetriebericht gebruikt dat in de vorige sectie wordt weergegeven.

Voorbeeld 1: De volgende JQ-query voert elk stukje telemetrie uit het invoerbericht uit als een afzonderlijk uitvoerbericht:

.telemetry[]

JSON-uitvoer:

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

Fooi

Als u de uitvoer wilt wijzigen in één bericht met een matrix van telemetrietypen, gebruikt u de query .telemetry.

Voorbeeld 2: De volgende JQ-query converteert de invoertelemetriematrix naar een object met telemetrienamen als sleutels:

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

JSON-uitvoer:

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

Voorbeeld 3: Met de volgende JQ-query wordt de rangeOfMotion-telemetriewaarde gevonden en geconverteerd van graden naar radialen met behulp van de formule rad = degree * pi / 180. Deze query laat ook zien hoe u de iotc module importeert en gebruikt:

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

JSON-uitvoer:

{
  "rangeOfMotion": 1.9198621771937625
}

Voorbeeld 4: Als u het invoerbericht in tabelvorm wilt bewerken, kunt u elk geëxporteerd bericht toewijzen aan een of meer rijen. Rijuitvoer wordt logisch weergegeven als een JSON-object waarbij de kolomnaam de sleutel is en de kolomwaarde de waarde is:

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

Fooi

Gebruik een tabellaire indeling wanneer u exporteert naar Azure Data Explorer.

Met de volgende JQ-query worden rijen naar een tabel geschreven waarin rangeOfMotion-telemetrie op verschillende apparaten wordt opgeslagen. De query wijst de apparaat-id, de enqueuedtijd en het bewegingsbereik toe aan een tabel met deze kolommen:

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

Uitvoer in JSON-indeling:

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

IoT Central-module

Een JQ-module is een verzameling aangepaste functies. Als onderdeel van uw transformatiequery kunt u een ingebouwde IoT Central-specifieke module importeren die functies bevat, zodat u uw query's gemakkelijker kunt schrijven. Gebruik de volgende instructie om de IoT Central-module te importeren:

import "iotc" as iotc;

De IoT Central-module bevat de volgende functies:

find(expression): Met de find functie kunt u een specifiek matrixelement vinden, zoals telemetriewaarde of eigenschapsvermelding in uw nettolading. De functie-invoer is een matrix en de parameter definieert een JQ-filter dat moet worden uitgevoerd op elk element in de matrix. De functie retourneert elk matrixelement waarbij het filter resulteert in waar:

Als u bijvoorbeeld een specifieke telemetriewaarde wilt zoeken met de naam RangeOfMotion:

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

Scenario's

In de volgende scenario's wordt de transformatiefunctionaliteit gebruikt om de indeling van de apparaatgegevens voor een specifieke bestemming aan te passen.

Scenario 1: Apparaatgegevens exporteren naar Azure Data Explorer

In dit scenario transformeert u apparaatgegevens zodat deze overeenkomen met het vaste schema in Azure Data Explorer, waarbij elke telemetriewaarde wordt weergegeven als een kolom in de tabel en elke rij één bericht vertegenwoordigt. Bijvoorbeeld:

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

Als u gegevens wilt exporteren die compatibel zijn met deze tabel, moet elk geëxporteerd bericht eruitzien als het volgende object. Het object vertegenwoordigt één rij, waarbij de sleutels kolomnamen zijn en de waarden de waarde zijn die in elke kolom moet worden geplaatst:

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

In dit scenario verzendt het apparaat de t1waarden en t2t3 telemetriewaarden in een invoerbericht dat eruitziet als in het volgende voorbeeld:

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

De volgende JQ-query voert de T1en T2T3 telemetriewaarden uit, de Timestamp en als deviceId een bericht met sleutel-waardeparen die overeenkomen met het Azure Data Explorer-tabelschema:

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

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

Zie Een Azure Data Explorer-bestemming maken voor meer informatie over het toevoegen van een Azure Data Explorer-cluster en -database als exportbestemming.

Scenario 2: Een telemetriematrix opsplitsen

In dit scenario verzendt het apparaat de volgende matrix met telemetrie in één bericht:

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

U wilt deze apparaatgegevens transformeren zodat deze overeenkomen met het volgende tabelschema:

cycleCount deviceId enqueuedTime parentStatus actief subdeviceId
2315 "9xwhr7khkfri" "1909-10-10T07:11:56.078161042Z" "gezond" true "subdevice1"
824567 "9xwhr7khkfri" "1909-10-10T07:11:56.078161042Z" "gezond" false "subdevice2"

Met de volgende JQ-query maakt u een afzonderlijk uitvoerbericht voor elke subdevice-vermelding in het bericht en bevat enkele algemene informatie van het basisbericht en het bovenliggende apparaat. Met deze query wordt de uitvoer afgevlakt en worden logische delen in uw gegevens gescheiden die als één bericht zijn aangekomen:

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

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

Scenario 3: Power BI-streaming

Met de functie voor realtime streaming van Power BI kunt u gegevens weergeven in een dashboard dat in realtime wordt bijgewerkt met lage latentie. Zie Realtime streamen in Power BI voor meer informatie.

Als u IoT Central wilt gebruiken met Power BI Streaming, stelt u een webhookexport in waarmee aanvraagteksten in een specifieke indeling worden verzonden. In dit voorbeeld wordt ervan uitgegaan dat u een Power BI Streaming-gegevensset hebt met het volgende schema:


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

Als u het exportdoel voor de webhook wilt maken, hebt u het REST API-URL-eindpunt nodig voor uw Power BI-streaminggegevensset.

In dit scenario verzendt het apparaat telemetrieberichten die eruitzien als in het volgende voorbeeld:

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

Met de volgende JQ-query wordt het invoerbericht getransformeerd naar een indeling die geschikt is voor de webhook om te verzenden naar de Power BI-streaminggegevensset. Dit voorbeeld bevat een filtervoorwaarde voor alleen uitvoerberichten voor een specifieke apparaatsjabloon. U kunt de functie voor gegevensexportfilters gebruiken om te filteren op apparaatsjabloon:

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

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

Scenario 4: Gegevens exporteren naar Azure Data Explorer en deze visualiseren in Power BI

In dit scenario exporteert u gegevens naar Azure Data Explorer en gebruikt u vervolgens een connector om de gegevens in Power BI te visualiseren. Zie Een Azure Data Explorer-bestemming maken voor meer informatie over het toevoegen van een Azure Data Explorer-cluster en -database als exportbestemming.

In dit scenario wordt een Azure Data Explorer-tabel met het volgende schema gebruikt:

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

In dit scenario verzendt het apparaat telemetrieberichten die eruitzien als in het volgende voorbeeld:

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

De volgende JQ-query transformeert het invoerbericht naar een afzonderlijk uitvoerbericht voor elke telemetriewaarde. Deze transformatie produceert een uitvoer die overeenkomt met het Azure Data Explorer-tabelschema. De transformatie maakt gebruik van een entiteitskenmerkwaardeschema waarbij elke rij één telemetriewaarde bevat en de naam van de telemetrie een waarde is in een afzonderlijke kolom in dezelfde rij:

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

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

De uitvoergegevens worden geëxporteerd naar uw Azure Data Explorer-cluster. Voer de volgende stappen uit om de geëxporteerde gegevens in Power BI te visualiseren:

  1. Installeer de Power BI-toepassing. U kunt de Power BI-bureaubladtoepassing downloaden van Go van gegevens tot inzicht in actie met Power BI Desktop.
  2. Download het Power BI Desktop IoT Central ADX-bestand Verbinding maken or.pbit van GitHub.
  3. Gebruik de Power BI Desktop-app om het IoT Central ADX-Verbinding maken or.pbit-bestand te openen dat u in de vorige stap hebt gedownload. Wanneer u hierom wordt gevraagd, voert u de gegevens van het Azure Data Explorer-cluster, de database en de tabel in die u eerder hebt genoteerd.

U kunt nu de gegevens visualiseren in Power BI:

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

Volgende stappen

Nu u weet hoe u gegevens kunt transformeren in IoT Central, is een voorgestelde volgende stap het leren hoe u analyses gebruikt in IoT Central.