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

Tento článek popisuje běžné problémy s vývojem dotazů Stream Analytics a jejich řešením.

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ů. Řada kroků pro řešení potíží vyžaduje povolení protokolů prostředků pro vaši úlohu Stream Analytics. Pokud nemáte povolené protokoly prostředků, přečtěte si téma Řešení potíží se službou Azure Stream Analytics pomocí protokolů prostředků.

Dotaz nevytácí očekávaný výstup

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

    • Na webu Azure Portal na kartě 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 místně pomocí nástrojů Azure Stream Analytics pro Visual Studio nebo Visual Studio Code.
  2. Podrobné ladění dotazů pomocí diagramu úloh v nástrojích Azure Stream Analytics pro Visual Studio Code Diagram úloh ukazuje, jak data proudí ze vstupních zdrojů (Event Hub, IoT Hub atd.) několika kroky dotazu a nakonec do výstupních jímek. Každý krok dotazu se mapuje na dočasnou sadu výsledků definovanou ve skriptu pomocí příkazu WITH. Data a metriky můžete zobrazit v každé zprostředkující sadě výsledků a najít zdroj problému.

    Job diagram preview result

  3. Pokud používáte časové razítko Podle, ověřte, že události mají časové razítko větší než čas spuštění úlohy.

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

    • Klauzule WHERE v dotazu vyfiltrovala všechny události, což brání vygenerování výstupu.
    • Funkce CAST selže, což způsobí selhání úlohy. Pokud se chcete vyhnout selhání přetypování typu, 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 spuštění úlohy a události se zahodí.
    • Podmínky JOIN se neshodují. Pokud neexistují žádné shody, bude nulový výstup.
  5. Ujistěte se, že jsou zásady řazení událostí nakonfigurované podle očekávání. Přejděte na Nastavení a vyberte Pořadí událostí. Zásada se nepoužije , když k otestování dotazu použijete tlačítko Test . Tento výsledek je jedním rozdílem mezi testováním v prohlížeči a spuštěním úlohy v produkčním prostředí.

  6. Ladění pomocí protokolů aktivit a 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.

Vysoké využití prostředků

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

Pokud je využití prostředků konzistentně větší než 80 %, zpoždění meze roste a počet nevyřízených událostí roste, zvažte zvýšení jednotek streamování. Vysoké využití značí, že úloha se blíží maximálnímu přidělenému množství prostředků.

Postupné ladění dotazů

Při zpracování dat v reálném čase může být užitečné vědět, jak vypadají data uprostřed dotazu. Můžete to vidět pomocí diagramu úloh v sadě Visual Studio. Pokud nemáte Sadu Visual Studio, můžete provést další kroky pro výstup přechodných dat.

Vzhledem k tomu, že vstupy nebo kroky úlohy Azure Stream Analytics je možné číst vícekrát, můžete napsat další příkazy SELECT INTO. Tím se vypíše zprostředkující data do úložiště a umožní vám zkontrolovat správnost dat, stejně jako sledování proměnných při ladění programu.

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 spojí data z centra událostí a dva referenční objekty blob, aby získal informace o názvu a kategorii:

Example Stream Analytics SELECT INTO query

Všimněte si, že úloha je spuštěná, ale ve výstupu se neprodukují žádné události. Na dlaždici Monitorování vidíte, že vstup vytváří data, ale nevíte, který krok join způsobil vyřazení všech událostí.

The Stream Analytics Monitoring tile

V této situaci můžete přidat několik dalších příkazů SELECT INTO k "protokolování" průběžných výsledků JOIN a dat načtených ze vstupu.

V tomto příkladu jsme přidali dva nové "dočasné výstupy". Může to být nějaká jímka, která se vám líbí. Tady jako příklad používáme Azure Storage:

Adding extra SELECT INTO statements to Stream Analytics query

Dotaz pak můžete přepsat takto:

Rewritten SELECT INTO Stream Analytics query

Teď úlohu spusťte znovu a nechte ji běžet několik minut. Potom zadejte dotaz temp1 a temp2 pomocí Průzkumníka cloudu sady Visual Studio, aby se vytvořily následující tabulky:

tabulka temp1SELECT INTO temp1 table Stream Analytics query

tabulka temp2SELECT INTO temp2 table Stream Analytics query

Jak vidíte, temp1 a temp2 mají data a sloupec s názvem se správně vyplní v temp2. Vzhledem k tomu, že ve výstupu stále nejsou žádná data, je ale něco špatně:

SELECT INTO output1 table with no data Stream Analytics query

Vzorkováním dat můžete mít téměř jistotu, že problém souvisí s druhým připojením JOIN. Referenční data si můžete stáhnout z objektu blob a podívat se:

SELECT INTO ref table Stream Analytics query

Jak vidíte, formát guid v těchto referenčních datech se liší od formátu sloupce [from] v temp2. Proto data nepřišla ve výstupu 1 podle očekávání.

Můžete opravit formát dat, nahrát ho do referenčního objektu blob a zkusit to znovu:

SELECT INTO temp table Stream Analytics query

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

SELECT INTO final table Stream Analytics query

Získání pomoci

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

Další kroky