Co je jq v kanálech Azure IoT Data Processor Preview?
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.
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.
jq je opensourcový procesor JSON, který můžete použít restrukturalizované a formátované datové části v kanálech Azure IoT Data Processor Preview:
- Fáze kanálu filtru používá jq k povolení flexibilních dotazů filtru.
- Fáze kanálu transformace používá jq k povolení transformace dat.
Tip
jq není stejný jako jQuery a řeší jinou sadu problémů. Když hledáte online informace o jq, mohou výsledky hledání obsahovat informace jQuery. Nezapomeňte informace jQuery ignorovat nebo vyloučit.
Jq, který zadáte v těchto fázích, musí být:
- Syntakticky platné.
- Sémanticky platné pro zprávu, na kterou je jq použit.
Jak používat jq
Jazyk jq ve fázích kanálu zpracovatele dat používáte dvěma způsoby:
- Výrazy , které používají plnou sílu jazyka jq, včetně možnosti provádět libovolnou manipulaci a výpočty s vašimi daty. Výrazy se zobrazují ve fázích kanálu, jako je filtr a transformace, a označují se jako výrazy , ve kterých se používají.
- Cesty identifikují jedno umístění ve zprávě. Cesty používají malou podmnožinu jazyka jq. Cesty slouží k načtení informací ze zpráv a k umístění vypočítaných informací zpět do zprávy pro pozdější zpracování v kanálu.
Tip
Tato příručka neposkytuje úplný obrázek funkcí jq. Úplný odkaz na jazyk najdete v příručce jq.
Z důvodů výkonu blokuje zpracovatel dat použití následujících funkcí jq:
Modulemeta
Range
Recurse
Until
Walk
While
Řešení problému
Při vytváření cest nebo výrazů jq v rámci zpracovatele dat je potřeba mít na paměti několik věcí. Pokud dochází k problémům, ujistěte se, že neprovádíte jednu z následujících chyb:
Nenabídání rozsahu na payload
Všechny zprávy v kanálech zpracovatele dat začínají strukturou, která umístí datovou část zprávy do pole nejvyšší úrovně s názvem payload
. I když to není nutné, je to silná konvence při zpracování zpráv, aby hlavní datová část v payload
poli zůstala při průchodu zpráv různými fázemi kanálu.
Většina případů použití transformace a filtrování zahrnuje práci přímo s datovou částí, proto je běžné vidět celý dotaz vymezený na pole datové části. Můžete zapomenout, že zprávy používají tuto strukturu a považují datovou část za to, jako by byla na nejvyšší úrovni.
Oprava této chyby je jednoduchá. Pokud používáte jq to:
- Vyfiltrujte zprávy, přidejte
.payload |
na začátek výrazu správný obor. - Transformace zpráv:
- Pokud zprávu nerozdělíte, přidejte
.payload |=
na začátek výrazu obor transformace. - Pokud zprávu rozdělujete, přidejte
.payload = (.payload | <expression>)
ji kolem<expression>
aktualizace datové části konkrétně při povolování rozdělení zprávy.
- Pokud zprávu nerozdělíte, přidejte
Pokus o kombinování více zpráv
jq obsahuje spoustu funkcí, které umožňují rozdělit zprávy a změnit jejich strukturu. V okamžiku, kdy se zadává fáze kanálu, ale může vyvolat výraz jq pouze jedna zpráva. Proto není možné s filtry a transformacemi kombinovat data z více vstupních zpráv.
Pokud chcete sloučit hodnoty z více zpráv, pomocí agregační fáze nejprve zkombinujte hodnoty a pak pomocí transformací nebo filtrů můžete pracovat s kombinovanými daty.
Oddělení argumentů funkce místo ,
;
Na rozdíl od většiny programovacích jazyků se jq nepoužívá ,
k oddělení argumentů funkce. jq odděluje jednotlivé argumenty funkce .;
Tato chyba může být složitá při ladění, protože ,
je platná syntaxe na většině míst, ale znamená něco jiného. V jazyce jq ,
odděluje hodnoty v datovém proudu.
Nejběžnější chyba, kterou zjistíte, pokud místo nějakého ;
typu použijete ,
stížnost, že funkce, kterou se pokoušíte vyvolat, neexistuje pro zadaný počet argumentů. Pokud se při volání funkce, která nedává smysl, zobrazí nějaké chyby kompilace nebo jiné podivné chyby, ujistěte se, že používáte ;
místo ,
oddělení argumentů.
Pořadí operací
Pořadí operací v jazyce jq může být matoucí a neintuitivní. Operace mezi |
znaky se obvykle spouští společně před tím, než jq použije |
, ale existují některé výjimky. Obecně můžete přidat ()
všechno, co si nejste jisti přirozeným pořadím operací. Při použití jazyka se dozvíte, co potřebuje závorky a co ne.
Související obsah
Pokud používáte jq, přečtěte si tyto články nápovědy:
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro