Agregace dat v kanálu zpracovatele dat
Důležité
Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi PREVIEW. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.
Pokud je dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT, nebudete moct upgradovat instalaci ve verzi Preview.
Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
Agregační fáze je volitelná, konfigurovatelná a průběžná fáze kanálu, která umožňuje spouštět operace vzorkování a dávkování u streamovaných dat snímačů přes uživatelsky definovaná časová období.
Pomocí agregační fáze můžete shromažďovat zprávy přes definované okno a vypočítat hodnoty agregace z vlastností ve zprávách. Fáze generuje agregované hodnoty jako vlastnosti v jedné zprávě na konci každého časového intervalu.
- Každý oddíl kanálu provádí agregaci nezávisle na sobě.
- Výstupem fáze je jedna zpráva, která obsahuje všechny definované agregační vlastnosti.
- Fáze zahodí všechny ostatní vlastnosti. Funkce Last, First nebo Collect však můžete použít k zachování vlastností, které by jinak fáze během agregace vynechala.
- Aby agregovaná fáze fungovala, měla by fáze zdroje dat v kanálu deserializovat příchozí zprávu.
Požadavky
Ke konfiguraci a použití fáze agregovaného kanálu potřebujete nasazenou instanci zpracovatele dat, která zahrnuje volitelnou součást zpracovatele dat.
Konfigurace fáze
Konfigurace JSON agregační fáze definuje podrobnosti fáze. Pokud chcete vytvořit fázi, můžete pracovat s uživatelským rozhraním založeným na formuláři nebo zadat konfiguraci JSON na kartě Upřesnit :
Pole | Typ | Popis | Požaduje se | Výchozí | Příklad |
---|---|---|---|---|---|
Název | String | Název, který se má zobrazit v uživatelském rozhraní zpracovatele dat. | Ano | - | Calculate Aggregate |
Popis | String | Uživatelsky přívětivý popis toho, co agregační fáze dělá. | No | Aggregation over temperature |
|
Časové okno | Doba trvání , která určuje období, ve kterém se agregace spouští. | Ano | - | 10s |
|
Funkce Properties > | Výčet | Agregační funkce , která se má použít. | Ano | - | Sum |
Vlastnosti > InputPath1 | Cesta | Cesta k vlastnosti příchozí zprávy pro použití funkce. | Ano | - | .payload.temperature |
Vlastnosti > OutputPath2 | Cesta | Cesta k umístění v odchozí zprávě pro umístění výsledku. | Ano | - | .payload.temperature.average |
V jedné agregační fázi můžete definovat více konfigurací vlastností . Můžete například vypočítat součet teploty a vypočítat průměr tlaku.
1Vstupní cesta:
- Datový typ hodnoty vlastnosti vstupní cesty musí být kompatibilní s typem definované funkce .
- Pro výpočet více funkcí ve stejné vlastnosti vstupní cesty můžete zadat stejnou vstupní cestu napříč více konfiguracemi agregace. Ujistěte se, že se výstupní cesty liší, aby se zabránilo přepsání výsledků.
2Výstupní cesta:
- Výstupní cesty můžou být stejné jako nebo jiné než vstupní cesta. Pokud počítáte více agregací na stejné vlastnosti vstupní cesty, použijte různé výstupní cesty.
- Nakonfigurujte jedinečné výstupní cesty, abyste se vyhnuli přepsání agregovaných hodnot.
Windows
Okno je časový interval, během kterého fáze shromažďuje zprávy. Na konci okna fáze použije nakonfigurovanou funkci na vlastnosti zprávy. Fáze pak vygeneruje jednu zprávu.
V současné době fáze podporuje pouze přeskakující okna.
Přeskakující okna jsou řada pevných, nepřekryvných a po sobě jdoucích časových intervalů. Okno začíná a končí v pevných bodech v čase:
Velikost okna definuje časový interval, během kterého fáze shromažďuje zprávy. Velikost okna definujete pomocí běžného vzoru Doba trvání .
Funkce
Agregační fáze podporuje následující funkce pro výpočet agregačních hodnot přes vlastnost zprávy definovanou ve vstupní cestě:
Function | Popis |
---|---|
Sum | Vypočítá součet hodnot vlastnosti ve vstupních zprávách. |
Průměr | Vypočítá průměr hodnot vlastnosti ve vstupních zprávách. |
Počet | Spočítá počet výskytů vlastnosti v okně. |
Min. | Vypočítá minimální hodnotu hodnot vlastnosti ve vstupních zprávách. |
Maximum | Vypočítá maximální hodnotu hodnot vlastnosti ve vstupních zprávách. |
Last | Vrátí nejnovější hodnotu hodnot vlastnosti ve vstupních zprávách. |
První | Vrátí první hodnotu hodnot vlastnosti ve vstupních zprávách. |
Collect | Vrátí všechny hodnoty vlastnosti ve vstupních zprávách. |
Následující tabulka uvádí datové typy zpráv podporované jednotlivými funkcemi:
Function | Celé číslo | Float | String | Datum a čas | Pole | Object | Binární |
---|---|---|---|---|---|---|---|
Sum | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Průměr | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Počet | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Min. | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Max. | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Last | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
První | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Collect | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Vzorová konfigurace
Následující příklad JSON ukazuje úplnou konfiguraci agregační fáze:
{
"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"
}
]
}
Konfigurace definuje agregační fázi, která se vypočítá v desetisekundovém okně:
- Průměrná teplota
- Součet teploty
- Součet tlaku
Příklad
Tento příklad obsahuje dvě ukázkové vstupní zprávy a ukázkovou výstupní zprávu vygenerovanou pomocí předchozí konfigurace:
Vstupní zpráva 1:
{
"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
}
}
Vstupní zpráva 2:
{
"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
}
}
Výstupní zpráva:
{
"systemProperties":{
"partitionKey":"foo",
"partitionId":5,
"timestamp":"2023-01-11T10:02:07Z"
},
"payload":{
"temperature_avg":242.5,
"temperature_all":[250,235],
"pressure":27.5
}
}