Adatok összesítése egy Azure IoT-adatfeldolgozó előzetes verziójában
Fontos
Az Azure IoT Operations Előzetes verziója – az Azure Arc által engedélyezett verzió jelenleg előzetes verzióban érhető el. Ezt az előzetes verziójú szoftvert nem szabad éles környezetben használni.
A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Az aggregátum egy opcionális, konfigurálható köztes folyamatszakasz, amely lehetővé teszi, hogy a streamelőérzékelő adatain futó mintavételezési és kötegelési műveleteket felhasználó által meghatározott időkereteken futtassa.
Aggregátumszakasz használatával összegyűjthet üzeneteket egy meghatározott ablakban , és kiszámíthatja az üzenetek tulajdonságaiból származó összesítési értékeket. A szakasz az összesített értékeket egy üzenetben, az egyes időablakok végén lévő tulajdonságokként bocsátja ki.
- Minden folyamatpartíció egymástól függetlenül végzi az összesítést.
- A szakasz kimenete egyetlen üzenet, amely az összes definiált összesítő tulajdonságot tartalmazza.
- A szakasz minden más tulajdonságot elvet. Az Utolsó, az Első vagy a Collectfüggvény használatával azonban megőrizheti azokat a tulajdonságokat, amelyeket egyébként a szakasz elvetne az összesítés során.
- Az összesítési fázis működéséhez a folyamat adatforrás-szakaszának deszerializálnia kell a bejövő üzenetet.
Előfeltételek
Az összesítő folyamatszakasz konfigurálásához és használatához az Azure IoT Data Processor Preview egy üzembe helyezett példányára van szükség, amely tartalmazza az opcionális adatfeldolgozó összetevőt.
A szakasz konfigurálása
Az összesített fázis JSON-konfigurációja határozza meg a szakasz részleteit. A szakasz létrehozásához használhatja az űrlapalapú felhasználói felületet, vagy megadhatja a JSON-konfigurációt a Speciális lapon:
Mező | Típus | Leírás | Kötelező | Alapértelmezett | Példa |
---|---|---|---|---|---|
Név | Sztring | Az Adatfeldolgozó felhasználói felületén megjelenítendő név. | Igen | - | Calculate Aggregate |
Leírás | Sztring | Az összesítési szakasz felhasználóbarát leírása. | Nem | Aggregation over temperature |
|
Időablak | Az az időtartam , amely azt az időszakot határozza meg, amely alatt az összesítés fut. | Igen | - | 10s |
|
Tulajdonságok > függvény | Enumeráció | A használni kívánt összesítő függvény . | Igen | - | Sum |
Tulajdonságok > InputPath1 | Elérési út | A függvény alkalmazásához a bejövő üzenetben található tulajdonság elérési útja . | Igen | - | .payload.temperature |
Properties > OutputPath2 | Elérési út | A kimenő üzenet helyének elérési útja az eredmény elhelyezéséhez. | Igen | - | .payload.temperature.average |
Egy összesítési szakaszban több tulajdonságkonfigurációt is meghatározhat. Kiszámíthatja például a hőmérséklet összegét, és kiszámíthatja a nyomás átlagát.
1Bemeneti elérési út:
- A bemeneti elérési út tulajdonság értékének adattípusának kompatibilisnek kell lennie a definiált függvény típusával.
- Ugyanazt a bemeneti útvonalat több összesítési konfigurációban is megadhatja, így több függvényt is kiszámíthat ugyanazon a bemeneti elérésiút-tulajdonságon. Győződjön meg arról, hogy a kimeneti útvonalak eltérnek az eredmények felülírásának elkerülése érdekében.
2Kimeneti elérési út:
- A kimeneti elérési utak lehetnek azonosak vagy eltérhetnek a bemeneti útvonaltól. Különböző kimeneti útvonalakat használhat, ha ugyanazon a bemeneti útvonal tulajdonságon több aggregációt számít ki.
- Konfiguráljon különböző kimeneti útvonalakat az összesített értékek felülírásának elkerülése érdekében.
Windows
Az ablak az az időintervallum, amely alatt a szakasz üzeneteket halmoz fel. Az ablak végén a szakasz a konfigurált függvényt alkalmazza az üzenet tulajdonságaira. A szakasz ezután egyetlen üzenetet bocsát ki.
A szakasz jelenleg csak a bukóablakokat támogatja.
A csapódó ablakok rögzített méretű, nem visszacsatoló és egymást követő időintervallumok sorozatát képezik. Az ablak rögzített időpontban indul el és ér véget:
Az ablak mérete határozza meg azt az időintervallumot, amely alatt a szakasz összegyűjti az üzeneteket. Az ablakméretet az Duration common minta használatával határozhatja meg.
Functions
Az összesítési fázis a következő függvényeket támogatja az összesített értékek kiszámításához a bemeneti útvonalban definiált üzenettulajdonságon keresztül:
Függvény | Leírás |
---|---|
Sum | Kiszámítja a bemeneti üzenetekben szereplő tulajdonság értékeinek összegét. |
Átlag | Kiszámítja a bemeneti üzenetekben szereplő tulajdonság értékeinek átlagát. |
Count | Megszámolja, hogy a tulajdonság hányszor jelenik meg az ablakban. |
Min | Kiszámítja a bemeneti üzenetekben szereplő tulajdonság értékeinek minimális értékét. |
Max | Kiszámítja a bemeneti üzenetekben lévő tulajdonság értékeinek maximális értékét. |
Last | A bemeneti üzenetekben szereplő tulajdonság értékeinek legújabb értékét adja vissza. |
First | A bemeneti üzenetekben szereplő tulajdonság értékeinek első értékét adja vissza. |
Collect | Adja vissza a tulajdonság összes értékét a bemeneti üzenetekben. |
Az alábbi táblázat az egyes függvények által támogatott üzenetadattípusokat sorolja fel:
Függvény | Egész | Lebegőpontos értékek | Sztring | Datetime | Tömb | Objektum | Bináris |
---|---|---|---|---|---|---|---|
Összeg | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Átlagos | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Gróf | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Min | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Max | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Last | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
First | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Collect | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Mintakonfiguráció
Az alábbi JSON-példa egy teljes összesített fáziskonfigurációt mutat be:
{
"displayName":"downSample",
"description":"Calculate average for production tags",
"window":
{
"type":"tumbling",
"size":"10s"
},
"properties":
[
{
"function":"average",
"inputPath": ".payload.temperature",
"outputPath":".payload.temperature_avg"
},
{
"function":"collect",
"inputPath": ".payload.temperature",
"outputPath":".payload.temperature_all"
},
{
"function":"average",
"inputPath":".payload.pressure",
"outputPath":".payload.pressure"
},
{
"function":"last",
"inputPath":".systemProperties",
"outputPath": ".systemProperties"
}
]
}
A konfiguráció egy tíz másodperces ablakban kiszámított összesítési szakaszt határoz meg:
- Átlagos hőmérséklet
- Hőmérséklet összege
- Nyomás összege
Példa
Ez a példa két bemeneti mintaüzenetet és egy, az előző konfigurációval létrehozott kimeneti üzenetet tartalmaz:
1. bemeneti üzenet:
{
"systemProperties":{
"partitionKey":"foo",
"partitionId":5,
"timestamp":"2023-01-11T10:02:07Z"
},
"qos":1,
"topic":"/assets/foo/tags/bar",
"properties":{
"responseTopic":"outputs/foo/tags/bar",
"contentType": "application/json"
},
"payload":{
"humidity": 10,
"temperature":250,
"pressure":30,
"runningState": true
}
}
2. bemeneti üzenet:
{
"systemProperties":{
"partitionKey":"foo",
"partitionId":5,
"timestamp":"2023-01-11T10:02:07Z"
},
"qos":1,
"topic":"/assets/foo/tags/bar",
"properties":{
"responseTopic":"outputs/foo/tags/bar",
"contentType": "application/json"
},
"payload":{
"humidity": 11,
"temperature":235,
"pressure":25,
"runningState": true
}
}
Kimeneti üzenet:
{
"systemProperties":{
"partitionKey":"foo",
"partitionId":5,
"timestamp":"2023-01-11T10:02:07Z"
},
"payload":{
"temperature_avg":242.5,
"temperature_all":[250,235],
"pressure":27.5
}
}