Řešení potíží s dotazy Azure Stream Analytics

Tento článek popisuje běžné problémy s vývojem dotazů Azure Stream Analytics, odstraňováním problémů s dotazy a opravami problémů. Mnoho kroků při řešení potíží vyžaduje, abyste pro svou úlohu Stream Analytics povolili protokoly prostředků. Pokud nemáte povolené protokoly prostředků, viz Řešení potíží se službou Azure Stream Analytics pomocí protokolů prostředků.

Dotaz nevytváří očekávaný výstup

  1. Kontrola chyb místním testováním:

    • V portálu Azure na záložce Dotaz vyberte Test. K otestování dotazu použijte stažená ukázková data. Prozkoumejte všechny chyby a pokuste se je opravit.
    • Dotaz můžete také otestovat lokálně pomocí nástrojů Azure Stream Analytics pro Visual Studio nebo Visual Studio Code.
  2. Ladění dotazů krok za krokem v místním prostředí pomocí diagramu úlohy v nástrojích Azure Stream Analytics pro Visual Studio Code Diagram práce ukazuje, jak data proudí ze vstupních zdrojů, například Azure Event Hubs a Azure IoT Hub, přes několik dotazovacích kroků a nakonec do výstupních spotřebičů. Skript mapuje každý krok dotazu na dočasnou sadu výsledků, kterou definujete pomocí příkazu WITH. Prohlédněte si data a metriky v každé mezisadě výsledků, abyste našli zdroj problému.

    Snímek obrazovky diagramu úlohy ve Visual Studio Code zobrazující výsledek v náhledu pro krok dotazu.

  3. Pokud používáte Timestamp By, ověřte, že události mají časové razítko pozdější než čas zahájení úlohy.

  4. Odstraňte běžné nástrahy, například:

    • Klauzule WHERE v dotazu filtrovala všechny události, takže dotaz nevytváří žádný výstup.
    • Funkce CAST selže, což způsobí selhání úlohy. Abyste se vyhnuli selhání při přetypování, použijte místo toho TRY_CAST.
    • Pokud používáte funkce okna, počkejte na celou dobu trvání okna, aby se zobrazil výstup z dotazu.
    • Časové razítko událostí předchází času zahájení úlohy, takže úloha tyto události zahodí.
    • Podmínky JOIN se neshodují. Pokud nejsou shody, dotaz nepřinese žádný výstup.
  5. Ujistěte se, že nastavíte pravidla pořadí událostí podle očekávaných pravidel. Přejděte do Nastavení a vyberte Pořadí událostí. Tlačítko Test neaplikuje tuto politiku, když testujete dotaz. Tento výsledek je jedním z rozdílů mezi testováním přímo v prohlížeči a spuštěním úlohy v produkci.

  6. Ladění pomocí protokolů aktivit a protokolů prostředků:

    • K identifikaci a ladění chyb použijte protokoly aktivit a filtrování.
    • K identifikaci a ladění chyb použijte protokoly prostředků úloh.

Laděte dotazy postupně

Při zpracování dat v reálném čase je užitečné vědět, jak data vypadají uprostřed dotazu. Pro zobrazení mezilehlých dat použijte diagram úloh ve Visual Studio. Pokud nemáte Visual Studio, můžete udělat další kroky pro výstup mezidat.

Protože Azure Stream Analytics dokáže číst vstupy nebo kroky úkolu opakovaně, můžete napsat další SELECT INTO příkazy. Tím se mezilehlá data ukládají do úložiště a umožňuje vám to zkontrolovat správnost dat, stejně jako když při ladění programu používáte sledované proměnné.

Následující příklad dotazu v úloze Azure Stream Analytics má jeden vstup streamu, dva referenční datové vstupy a výstup do Azure Table Storage. Dotaz spojuje data ze služby Event Hub a dvou referenčních blobů, aby získal informace o názvu a kategorii:

Screenshot příkladu dotazu Stream Analytics, který spojuje vstup do event hubu se dvěma referenčními bloby pomocí SELECT INTO.

Úloha běží, ale nevytváří ve výstupu žádné události. Na dlaždici Monitoring , která je zde zobrazena, vidíte, že vstup generuje data, ale nevíte, který krok JOIN všechny události zrušil.

Snímek obrazovky dlaždice Stream Analytics Monitoring zobrazující přijaté vstupní události, zatímco nejsou vytvářeny žádné výstupní události.

V této situaci můžete přidat několik dalších SELECT INTO příkazů, které "zaznamenávají" mezivýsledky JOIN a data načtená ze vstupu.

V tomto příkladu jsme přidali dva nové "dočasné výstupy". Mohou to být jakýkoliv dřez, který chcete. Tady jako příklad používáme Azure Storage:

Screenshot dotazu Stream Analytics s přidanými dalšími příkazy SELECT INTO pro zaznamenání mezivýsledků do úložiště.

Dotaz pak můžete přepsat takto:

Snímek obrazovky přepsaného dotazu Stream Analytics, který vypisuje mezilehlé výsledky JOIN do dočasných výstupů.

Teď úlohu spusťte znovu a nechte ji běžet několik minut. Poté temp1 dotazujte a temp2 pomocí Visual Studio Cloud Explorer vygenerujte následující tabulky:

tabulka temp1Screenshot tabulky temp1 zobrazující mezivýsledky JOIN z dotazu Stream Analytics.

tabulka temp2Screenshot tabulky temp2 ukazující sloupec jména správně vyplněný dotazem Stream Analytics.

Jak vidíte, jak temp1, tak temp2 obsahují data a sloupec name je v temp2 správně vyplněn. Nicméně, protože výstup stále neobsahuje žádná data, něco není v pořádku:

Screenshot tabulky output1, která ukazuje, že dotaz Stream Analytics nevracel žádná data.

Vzorkováním dat si můžete být téměř jisti, že problém je ve druhém JOIN. Referenční data si můžete stáhnout z blobu a prohlédnout si je:

Snímek obrazovky tabulky referenčních dat zobrazující formát GUID, který se liší od sloupce from v temp2.

Jak vidíte, formát GUID v těchto referenčních datech se liší od formátu sloupce [from] v temp2. To je důvod, proč data nedorazila do output1 podle očekávání.

Opravte formát dat, nahrajte ho do referenčního blobu a zkuste to znovu:

Screenshot referenční datové tabulky po opravě formátu GUID a nahrání do referenčního blobu.

Tentokrát se data ve výstupu naformátují a vyplní podle očekávání.

Screenshot výstupní tabulky zobrazující data formátovaná a vyplněná podle očekávání v dotazu Stream Analytics.

Vysoké využití prostředků

Ujistěte se, že využíváte paralelizaci ve službě Azure Stream Analytics. Naučte se škálovat pomocí paralelizace dotazů u úloh Stream Analytics konfigurací vstupních oddílů a laděním definice analytického dotazu.

Pokud využití prostředků trvale přesahuje 80 %, zpoždění vodoznaku roste a počet nevyřízených událostí se zvyšuje, zvažte navýšení počtu streamovacích jednotek. Vysoké využití značí, že úloha se blíží maximálnímu přidělenému množství prostředků.

Získání pomoci

Pokud potřebujete další pomoc, vyzkoušejte naši stránku pro otázky Microsoftu pro Azure Stream Analytics.