Jaké jsou vzory konfigurace v zpracovateli 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.
Několik typů konfigurace je společné pro několik fází kanálu. Tento článek popisuje způsob konfigurace cesty, dávky, šablon, opakování a doby trvání .
Cesta
Několik fází kanálu používá cestu k identifikaci umístění ve zprávě , do které se mají data číst nebo zapisovat. K definování těchto umístění použijte Path
pole, které používá syntaxi jq:
- Cesta je definována jako řetězec v uživatelském rozhraní a používá syntaxi jq .
- Cesta je definována vzhledem ke kořenovému adresáři zprávy zpracovatele dat. Cesta
.
odkazuje na celou zprávu. - Všechny cesty začínají
.
na . - Každý segment cesty může být:
.<identifier>
pro alfanumerický klíč objektu, například.topic
.."<identifier>"
pro libovolný klíč objektu, například."asset-id"
.["<identifier>"]
pro libovolný klíč objektu, například["asset-id"]
.[<index>]
pro index pole, například[2]
.
- Segmenty mohou být zřetězený tak, aby vytvořily složité cesty.
Jednotlivé segmenty cesty musí odpovídat následujícím regulárním výrazům:
Vzor | Regulární výraz | Příklad |
---|---|---|
.<identifier> |
\.[a-zA-Z_][a-zA-Z0-9_]* |
.topic |
."<identifier>" |
\."(\\"\|[^"])*" |
."asset-id" |
["<identifier>"] |
\["(\\"\|[^"])*"\] |
["asset-id"] |
[<index>] |
\[-?[0-9]+\] |
[2] |
Další informace najdete v části Cesty v průvodci jq.
Příklady cest
Následující cesty jsou příklady založené na standardní struktuře zpráv zpracovatele dat:
.systemProperties
návraty:{ "partitionKey": "foo", "partitionId": 5, "timestamp": "2023-01-11T10:02:07Z" }
.payload.humidity
návraty:10
.userProperties[0]
návraty:{ "key": "prop1", "value": "value1" }
.userProperties[0].value
návraty:value1
Doba trvání
Několik fází vyžaduje definici doby trvání časového rozsahu. Například okna v agregované fázi a vypršení časových limitů ve fázi popisku. Tyto fáze používají Duration
pole k reprezentaci této hodnoty.
Několik fází kanálu používá dobu trvání časového rozsahu. Agregační fáze má například vlastnost okna a fáze volání mají vlastnost vypršení časového limitu. K definování těchto časových rozsahů použijte Duration
pole:
Doba trvání je řetězcová hodnota s následujícím formátem <number><char><number><char>
, kde může být znak:
h
:hodinam
:minutas
:vteřinams
:milisekundaus
,µs
: mikrosekundyns
:nanosekunda
Příklady doby trvání
2h
1h10m30s
3m9ms400ns
Šablony
Několik fází vyžaduje definování řetězce s kombinací dynamických a statických hodnot. Tyto fáze používají hodnoty šablon .
Šablony zpracovatele dat používají syntaxi Mustache k definování dynamických hodnot v řetězcích.
Dynamické systémové hodnoty, které jsou k dispozici pro použití v šablonách, jsou:
instanceId
: ID instance zpracovatele dat.pipelineId
: ID kanálu, ve které je fáze součástí.YYYY
: Aktuální rok.MM
: Aktuální měsíc.DD
: Aktuální datum.HH
: Aktuální hodina.mm
: Aktuální minuta.
V současné době můžete pomocí šablon definovat cesty k souborům v cílové fázi.
Statická a dynamická pole
Některé fáze vyžadují definici hodnot, které mohou být statické řetězce nebo dynamická hodnota odvozená ze Path
zprávy. K definování těchto hodnot můžete použít statická nebo dynamická pole.
Statické nebo dynamické pole je vždy zapsáno jako objekt s polem type
, které má jednu ze dvou hodnot: static
nebo dynamic
. Schéma se liší v závislosti na type
.
Statická pole
Statická definice je pevná hodnota pro type
hodnotu static
. Skutečná hodnota je uložena v value
.
Pole | Typ | Popis | Požaduje se | Výchozí | Příklad |
---|---|---|---|---|---|
type | const string | Typ pole. | Ano | - | static |
hodnota | jakékoliv | Statická hodnota, která se má použít pro konfiguraci (obvykle řetězec). | Ano | - | "static" |
Následující příklady ukazují některé definice statických polí:
{
"some-field": {
"type": "static",
"value": "some-static-value"
}
}
{
"some-boolean-field": {
"type": "static",
"value": true
}
}
{
"some-complex-field": {
"type": "static",
"value": {
"some": [
"nested",
"data"
]
}
}
}
Dynamická pole
Pevná hodnota je type
dynamic
. Hodnota je cesta jq.
Pole | Typ | Popis | Požaduje se | Výchozí | Příklad |
---|---|---|---|---|---|
type | const string | Typ pole | Ano | - | dynamic |
hodnota | Cesta | Cesta v každé zprávě, kde je možné dynamicky načíst hodnotu pole. | Ano | - | .systemProperties.partitionKey |
Následující příklad ukazuje definici dynamického pole:
{
"some-field": {
"type": "dynamic",
"value": ".systemProperties.topic"
}
}
Zkusit znovu
Fáze, které volají externím službám, můžou použít opakování ke zpracování dočasných selhání a zlepšení spolehlivosti. Při konfiguraci fáze můžete přepsat výchozí zásady opakování.
Existují čtyři možné zásady opakování:
default
: Výchozí zásadou opakování je použití exponenciálního opakování opakování se třemi opakováními a počátečním intervalem opakování 500 ms.none
: Neprovádí se žádné opakování.fixed
: Pevná zásada opakování opakuje pevný počet opakování s pevným intervalem mezi jednotlivými opakováními.exponential
: Exponenciální zásada opakování opakuje pevný počet opakování s exponenciálně rostoucím intervalem mezi jednotlivými opakováními.
Pokud zvolíte default
nebo none
, nemusíte poskytovat žádnou další konfiguraci. Pokud zvolíte fixed
nebo exponential
, musíte zadat další konfiguraci:
Pevný
Pole | Typ | Popis | Povinné? | Výchozí | Příklad |
---|---|---|---|---|---|
type |
string | Název typu opakování: fixed |
Yes | – | fixed |
interval |
Doba trvání | Počáteční časové období mezi jednotlivými opakováními. | No | 500ms |
2s |
maxRetries |
int | Počet opakovaných pokusů od 1 do 20 |
No | 3 |
20 |
Exponenciální
Pole | Typ | Popis | Povinné? | Výchozí | Příklad |
---|---|---|---|---|---|
type |
string | Název typu opakování: exponential |
Yes | – | exponential |
interval |
Doba trvání | Počáteční časové období mezi jednotlivými opakováními. | No | 500ms |
2s |
maxRetries |
int | Počet opakovaných pokusů od 1 do 20 |
No | 3 |
20 |
maxInterval |
Doba trvání | Maximální časové období mezi jednotlivými opakováními. | No | Nic | 100s |
Exponenciální časy opakování se vypočítají takto: Pokud interval začíná 500ms
, bude několik dalších intervalů randInt(500ms, 500ms * 2^1)
opakování : , , randInt(500ms, 500ms * 2^2)
..., randInt(500ms, 500ms * 2^maxRetries)
.
Batch
Několik cílů ve výstupní fázi vám umožní dávkové zprávy před zápisem do cíle. Tyto cíle používají dávku k definování parametrů dávkování.
V současné době můžete definovat dávku na základě času. Pokud chcete definovat dávkování, musíte zadat časový interval a cestu. Path
definuje, která část příchozí zprávy se má zahrnout do dávkového výstupu.
Pole | Typ | Popis | Požaduje se | Výchozí | Příklad |
---|---|---|---|---|---|
Čas | Doba trvání | Jak dlouho dávková data | No | 60s (V destinacích, kde se vynucuje dávkování) |
120s |
Cesta | Cesta | Cesta k hodnotě v každé zprávě, která se má zahrnout do výstupu. | No | .payload |
.payload.output |