Sdílet prostřednictvím


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:

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.

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.

Pokud používáte jq, přečtěte si tyto články nápovědy: