Problemen met Azure Stream Analytics-query's oplossen

In dit artikel worden veelvoorkomende problemen beschreven met het ontwikkelen van Stream Analytics-query's en hoe u deze kunt oplossen.

In dit artikel worden veelvoorkomende problemen beschreven met het ontwikkelen van Azure Stream Analytics-query's, het oplossen van queryproblemen en het oplossen van de problemen. Voor veel stappen voor probleemoplossing moeten resourcelogboeken zijn ingeschakeld voor uw Stream Analytics-taak. Als u geen resourcelogboeken hebt ingeschakeld, raadpleegt u Problemen met Azure Stream Analytics oplossen met behulp van resourcelogboeken.

Query produceert geen verwachte uitvoer

  1. Bekijk fouten door lokaal te testen:

    • Selecteer Testen in Azure Portal op het tabblad Query. Gebruik de gedownloade voorbeeldgegevens om de query te testen. Bekijk eventuele fouten en probeer deze te corrigeren.
    • U kunt uw query ook lokaal testen met behulp van Azure Stream Analytics-hulpprogramma's voor Visual Studio of Visual Studio Code.
  2. Fouten opsporen in query's, stap voor stap, lokaal met behulp van taakdiagrammen in Azure Stream Analytics-hulpprogramma's voor Visual Studio Code. In het taakdiagram ziet u hoe gegevens stromen uit invoerbronnen (Event Hub, IoT Hub, enzovoort) via meerdere querystappen en ten slotte naar uitvoersinks. Elke querystap wordt toegewezen aan een tijdelijke resultatenset die in het script is gedefinieerd met behulp van de WITH-instructie. U kunt de gegevens, evenals metrische gegevens, bekijken in elke tussenliggende resultatenset om de bron van het probleem te vinden.

    Job diagram preview result

  3. Als u Timestamp By gebruikt, controleert u of de gebeurtenissen tijdstempels hebben die groter zijn dan de begintijd van de taak.

  4. Veelvoorkomende valkuilen elimineren, zoals:

    • Een WHERE-component in de query heeft alle gebeurtenissen gefilterd, waardoor er geen uitvoer kan worden gegenereerd.
    • Een CAST-functie mislukt, waardoor de taak mislukt. Gebruik in plaats daarvan TRY_CAST om fouten met typecasts te voorkomen.
    • Wanneer u vensterfuncties gebruikt, wacht u tot de volledige duur van het venster een uitvoer van de query ziet.
    • De tijdstempel voor gebeurtenissen voorafgaat aan de begintijd van de taak en gebeurtenissen worden verwijderd.
    • JOIN-voorwaarden komen niet overeen. Als er geen overeenkomsten zijn, is er geen uitvoer.
  5. Zorg ervoor dat beleid voor gebeurtenisvolgorde is geconfigureerd zoals verwacht. Ga naar Instellingen en selecteer Gebeurtenisvolgorde. Het beleid wordt niet toegepast wanneer u de knop Testen gebruikt om de query te testen. Dit resultaat is één verschil tussen het testen in de browser versus het uitvoeren van de taak in productie.

  6. Fouten opsporen met behulp van activiteiten- en resourcelogboeken:

Resourcegebruik is hoog

Zorg ervoor dat u profiteert van parallelle uitvoering in Azure Stream Analytics. U kunt leren schalen met queryparallellisatie van Stream Analytics-taken door invoerpartities te configureren en de definitie van de analysequery af te stemmen.

Als het resourcegebruik consistent hoger is dan 80%, neemt de watermerkvertraging toe en neemt het aantal backloggebeurtenissen toe, overweeg dan om streaming-eenheden te verhogen. Hoog gebruik geeft aan dat de taak dicht bij de maximaal toegewezen resources wordt gebruikt.

Fouten progressief opsporen in query's

In realtime gegevensverwerking kan het handig zijn om te weten hoe de gegevens eruit zien in het midden van de query. U kunt dit zien met behulp van het taakdiagram in Visual Studio. Als u geen Visual Studio hebt, kunt u aanvullende stappen uitvoeren om tussenliggende gegevens uit te voeren.

Omdat invoer of stappen van een Azure Stream Analytics-taak meerdere keren kunnen worden gelezen, kunt u extra SELECT INTO-instructies schrijven. Als u dit doet, worden tussenliggende gegevens in de opslag uitgevoerd en kunt u de juistheid van de gegevens inspecteren, net zoals horlogevariabelen doen wanneer u fouten in een programma opssport.

De volgende voorbeeldquery in een Azure Stream Analytics-taak heeft één stroominvoer, twee verwijzingsgegevensinvoer en uitvoer naar Azure Table Storage. De query voegt gegevens van de Event Hub en twee referentie-blobs toe om de naam en categoriegegevens op te halen:

Example Stream Analytics SELECT INTO query

Houd er rekening mee dat de taak wordt uitgevoerd, maar dat er geen gebeurtenissen worden geproduceerd in de uitvoer. Op de tegel Bewaking , die hier wordt weergegeven, ziet u dat de invoer gegevens produceert, maar u weet niet welke stap van de JOIN ervoor heeft gezorgd dat alle gebeurtenissen zijn verwijderd.

The Stream Analytics Monitoring tile

In deze situatie kunt u enkele extra SELECT INTO-instructies toevoegen om de tussenliggende JOIN-resultaten en de gegevens die uit de invoer worden gelezen, te registreren.

In dit voorbeeld hebben we twee nieuwe 'tijdelijke uitvoer' toegevoegd. Ze kunnen elke sink zijn die je leuk vindt. Hier gebruiken we Azure Storage als voorbeeld:

Adding extra SELECT INTO statements to Stream Analytics query

Vervolgens kunt u de query als volgt herschrijven:

Rewritten SELECT INTO Stream Analytics query

Start de taak opnieuw en laat deze enkele minuten draaien. Voer vervolgens een query uit op temp1 en temp2 met Visual Studio Cloud Explorer om de volgende tabellen te produceren:

tabel temp1SELECT INTO temp1 table Stream Analytics query

temp2-tabelSELECT INTO temp2 table Stream Analytics query

Zoals u ziet, hebben temp1 en temp2 beide gegevens en wordt de naamkolom correct ingevuld in temp2. Omdat er echter nog steeds geen gegevens in de uitvoer zijn, is er iets mis:

SELECT INTO output1 table with no data Stream Analytics query

Door de gegevens te nemen, kunt u bijna zeker zijn dat het probleem zich voordoet bij de tweede JOIN. U kunt de referentiegegevens uit de blob downloaden en een kijkje nemen:

SELECT INTO ref table Stream Analytics query

Zoals u ziet, is de indeling van de GUID in deze referentiegegevens anders dan de indeling van de kolom [van] in temp2. Daarom zijn de gegevens niet binnengekomen in uitvoer1 zoals verwacht.

U kunt de gegevensindeling herstellen, deze uploaden naar de blob en het opnieuw proberen:

SELECT INTO temp table Stream Analytics query

Deze keer worden de gegevens in de uitvoer opgemaakt en ingevuld zoals verwacht.

SELECT INTO final table Stream Analytics query

Hulp vragen

Probeer onze microsoft Q&A-vragenpagina voor Azure Stream Analytics voor meer hulp.

Volgende stappen