Problemen met Azure Stream Analytics oplossen
In dit artikel worden veelvoorkomende problemen met het ontwikkelen van Stream Analytics beschreven en hoe u deze kunt oplossen.
In dit artikel worden veelvoorkomende problemen beschreven Azure Stream Analytics het ontwikkelen van query's, het oplossen van queryproblemen en het oplossen van problemen. Voor veel stappen voor probleemoplossing moeten resourcelogboeken zijn ingeschakeld voor uw Stream Analytics taak. Als u geen resourcelogboeken hebt ingeschakeld, zie Problemen met Azure Stream Analytics met behulp van resourcelogboeken.
Query produceert geen verwachte uitvoer
Bekijk fouten door lokaal te testen:
- Selecteer Azure Portal op het tabblad Query de optie Testen. 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 Azure Stream Analytics hulpprogramma's voor Visual Studio of Visual Studio Code.
Fouten in query's stap voor stap lokaal opsporen met behulp van taakdiagram in Azure Stream Analytics hulpprogramma's Visual Studio Code. In het taakdiagram ziet u hoe gegevens van invoerbronnen (Event Hub, IoT Hub, enzovoort) door meerdere querystappen stromen en tot slot naar uitvoer-sinks. Elke querystap wordt met behulp van de WITH-instructie aan een tijdelijke resultatenset die in het script is gedefinieerd. U kunt de gegevens en metrische gegevens bekijken in elke tussenliggende resultatenset om de oorzaak van het probleem te vinden.

Als u Tijdstempel op gebruikt,controleert u of de gebeurtenissen tijdstempels hebben die groter zijn dan de begintijd van de taak.
Veelvoorkomende valkuilen elimineren, zoals:
- Met een WHERE-component in de query zijn alle gebeurtenissen eruit gefilterd, waardoor er geen uitvoer kan worden gegenereerd.
- Een CAST-functie mislukt, waardoor de taak mislukt. Als u type cast-fouten wilt voorkomen, gebruikt TRY_CAST in plaats daarvan.
- Wanneer u vensterfuncties gebruikt, wacht u tot de hele vensterduur een uitvoer van de query ziet.
- De tijdstempel voor gebeurtenissen voorafgaat aan de begintijd van de taak en gebeurtenissen worden uitgevallen.
- JOIN-voorwaarden komen niet overeen. Als er geen overeenkomsten zijn, is er geen uitvoer.
Zorg ervoor dat het beleid voor gebeurtenisorders is geconfigureerd zoals verwacht. Ga naar Instellingen en selecteer Gebeurtenis bestellen. 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 en het uitvoeren van de taak in productie.
Fouten opsporen met behulp van activiteiten- en resourcelogboeken:
- Gebruik Activiteitenlogboekenen filter om fouten te identificeren en fouten op te sporen.
- Gebruik taakresourcelogboeken om fouten te identificeren en fouten op te sporen.
Resourcegebruik is hoog
Zorg ervoor dat u profiteert van parallellisering in Azure Stream Analytics. U kunt leren schalen met query-parallellisering van Stream Analytics taken door invoerpartities te configureren en de querydefinitie voor analyse af te stemmen.
Als het resourcegebruik consistent hoger is dan 80%, neemt de watermerkvertraging toe en neemt het aantal vastgelegde gebeurtenissen toe, kunt u overwegen streaming-eenheden te verhogen. Hoog gebruik geeft aan dat de taak bijna het maximum aantal toegewezen resources gebruikt.
Fouten progressief opsporen in query's
Bij realtime gegevensverwerking kan het handig zijn om te weten hoe de gegevens er in het midden van de query uit zien. U kunt dit zien met behulp van het taakdiagram in Visual Studio. Als u nog geen Visual Studio, kunt u extra stappen ondernemen 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 naar de opslag uitgevoerd en kunt u de juistheid van de gegevens controleren, net zoals watchvariabelen doen wanneer u fouten in een programma opsport.
De volgende voorbeeldquery in een Azure Stream Analytics-taak heeft één stroominvoer, twee verwijzingsgegevensinvoer en een uitvoer naar Azure Table Storage. De query voegt gegevens van de Event Hub en twee referentie-blobs samen om de naam- en categoriegegevens op te halen:

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, kunt u zien dat de invoer gegevens produceert, maar u weet niet welke stap van de JOIN heeft geleid tot het verwijderen van alle gebeurtenissen.

In dit geval kunt u een paar extra SELECT INTO-instructies toevoegen om de tussenliggende JOIN-resultaten en de gegevens die uit de invoer worden gelezen, te 'logboeken' te maken.
In dit voorbeeld hebben we twee nieuwe tijdelijke uitvoer toegevoegd. Ze kunnen elke sink zijn die u wilt. Hier gebruiken we Azure Storage voorbeeld:

U kunt de query vervolgens als de volgende herschrijven:

Start de taak nu opnieuw en laat deze een paar minuten uitvoeren. Query vervolgens temp1 en temp2 met Visual Studio Cloud Explorer om de volgende tabellen te produceren:
temp1-tabel

temp2-tabel

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

Door een steekproef van de gegevens te nemen, weet u bijna zeker dat het probleem te maken heeft met de tweede JOIN. U kunt de referentiegegevens downloaden van de blob en het volgende bekijken:

Zoals u ziet, verschilt de indeling van de GUID in deze referentiegegevens van de indeling van de kolom [van] in temp2. Daarom zijn de gegevens niet zoals verwacht in output1 aangekomen.
U kunt de gegevensindeling herstellen, deze uploaden naar een verwijzingsblob en het opnieuw proberen:

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

Hulp vragen
Probeer onze Microsoft Q&A-vragenpaginavoor meer Azure Stream Analytics.