Sdílet prostřednictvím


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:

Diagram znázorňující 10sekundová přeskakující okna v agregační fázi

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