Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 moet u resourcelogboeken inschakelen voor uw Stream Analytics-taak. Als u geen resourcelogboeken hebt ingeschakeld, zie Problemen met Azure Stream Analytics oplossen met behulp van resourcelogboeken.
Query levert geen verwachte output op
Bekijk fouten door lokaal te testen:
- In het Azure-portaal, kies op het tabblad QueryTest. Gebruik de gedownloade voorbeeldgegevens om de query te testen. Bekijk eventuele fouten en probeer deze te corrigeren.
- Je kunt je query ook lokaal testen door gebruik te maken van Azure Stream Analytics-tools voor Visual Studio of Visual Studio Code.
Fouten opsporen in query's, stap voor stap, lokaal met behulp van taakdiagrammen in Azure Stream Analytics-hulpprogramma's voor Visual Studio Code. Het taakdiagram laat zien hoe data stroomt vanuit invoerbronnen, bijvoorbeeld Azure Event Hubs en Azure IoT Hub, via meerdere querystappen en uiteindelijk naar outputsinks. Het script koppelt elke querystap aan een tijdelijke resultaatset die je definieert met de WITH-instructie. Bekijk de gegevens en metrics in elke intermediaire resultaatset om de bron van het probleem te vinden.
Als u Timestamp By gebruikt, controleert u of de gebeurtenissen tijdstempels hebben die groter zijn dan de begintijd van de taak.
Veelvoorkomende valkuilen elimineren, zoals:
- Een WHERE-clausule in de query filterde alle gebeurtenissen eruit, zodat de query geen output oplevert.
- 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 vensterduur is verstreken voordat de query uitvoer oplevert.
- De tijdstempel voor gebeurtenissen gaat vooraf aan het starttijdstip van de opdracht, dus de opdracht laat de gebeurtenissen vallen.
- JOIN-voorwaarden komen niet overeen. Als er geen matches zijn, levert de query geen output op.
Zorg ervoor dat je het beleid voor het ordenen van evenementen zoals verwacht configureert. Ga naar Instellingen en selecteer Gebeurtenisvolgorde. De Test-knop past het beleid niet toe wanneer je de query test. Dit resultaat is een verschil tussen testen in de browser en het uitvoeren van de taak in productie.
Fouten opsporen met behulp van activiteiten- en resourcelogboeken:
- Gebruik activiteitenlogboeken en filter om fouten te identificeren en op te sporen.
- Gebruik taakresourcelogboeken om fouten te identificeren en op te sporen.
Queries stapsgewijs debuggen
Bij realtime dataverwerking is het handig om te weten hoe de data eruitziet in het midden van de query. Om de tussenliggende data te bekijken, gebruik je het taakdiagram in Visual Studio. Als je geen Visual Studio hebt, kun je extra stappen nemen om intermediate data te genereren.
Omdat Azure Stream Analytics invoer of stappen van een taak meerdere keren kan lezen, kun je extra SELECT INTO statements schrijven. Hiermee worden tussenliggende data opgeslagen en kun je de juistheid van de data controleren, net zoals watch-variabelen doen wanneer je een programma debuggt.
De volgende voorbeeldquery in een Azure Stream Analytics-taak heeft één stroominvoer, twee verwijzingsgegevensinvoer en uitvoer naar Azure-tabelopslag. De query voegt gegevens van de Event Hub en twee referentie-blobs toe om de naam en categoriegegevens op te halen:
De taak draait, maar veroorzaakt geen gebeurtenissen in de output. Op de Monitoring-tegel , hier getoond, zie je dat de invoer data produceert, maar je weet niet welke stap van de JOIN alle gebeurtenissen heeft laten vallen.
In deze situatie kun je een paar extra SELECT INTO statements toevoegen om de tussenresultaten JOIN en de data die uit de invoer wordt gelezen te "loggen".
In dit voorbeeld voegden we twee nieuwe "tijdelijke uitgangen" toe. Ze kunnen elke gootsteen zijn die je wilt. Hier gebruiken we Azure Storage als voorbeeld:
Vervolgens kunt u de query als volgt herschrijven:
Start de taak opnieuw en laat deze enkele minuten draaien. Voer vervolgens met Visual Studio Cloud Explorer query's uit op temp1 en temp2 om de volgende tabellen te genereren:
temp1-tabel
temp2-tabel
Zoals je kunt zien, temp1 en temp2 beide hebben data, en de name kolom is correct ingevuld in temp2. Omdat output echter nog steeds geen data bevat, is er iets mis:
Door de gegevens te bemonsteren, kun je er vrijwel zeker van zijn dat het probleem bij de tweede JOINligt. U kunt de referentiegegevens uit de blob downloaden en een kijkje nemen:
Zoals je kunt zien, is het formaat van de GUID in deze referentiedata anders dan het formaat van de [from] kolom in temp2. Daarom kwamen output1 de gegevens niet binnen zoals verwacht.
Herstel het dataformaat, upload het naar de referentieblob en probeer het opnieuw:
Deze keer worden de gegevens in de uitvoer opgemaakt en ingevuld zoals verwacht.
Resourcegebruik is hoog
Zorg ervoor dat u profiteert van parallelle uitvoering in Azure Stream Analytics. Leer opschalen met query-parallelisatie van Stream Analytics-jobs door invoerpartities te configureren en de analytics-querydefinitie 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. Hoge benutting geeft aan dat de taak bijna de maximaal toegewezen resources gebruikt.
Hulp vragen
Probeer onze microsoft Q&A-vragenpagina voor Azure Stream Analytics voor meer hulp.