Problembehandlung von Azure Stream Analytics-Abfragen

In diesem Artikel werden häufige Probleme bei der Entwicklung von Stream Analytics-Abfragen und deren Behebung beschrieben.

Dieser Artikel beschreibt häufige Probleme bei der Entwicklung von Azure Stream Analytics-Abfragen, die Behandlung von Abfrageproblemen und die Behebung der Probleme. Viele Troubleshootingschritte erfordern die Aktivierung von Ressourcenprotokollen für Ihren Stream Analytics-Auftrag. Wenn Sie Ressourcenprotokolle nicht aktiviert haben, finden Sie weitere Informationen unter Problembehandlung von Azure Stream Analytics mit Ressourcenprotokollen.

Die Abfrage erzeugt nicht die erwartete Ausgabe.

  1. Untersuchen Sie die Fehler durch lokales Testen:

    • Wählen Sie im Azure-Portal auf der Registerkarte Abfrage die Option Test aus. Verwenden Sie die heruntergeladenen Beispieldaten, um die Abfrage zu testen. Untersuchen Sie alle Fehler, und versuchen Sie, diese zu korrigieren.
    • Sie können Ihre Abfrage auch lokal testen, indem Sie die Azure Stream Analytics-Tools für Visual Studio oder Visual Studio Code verwenden.
  2. Debuggen Sie Abfragen nach und nach lokal anhand des Auftragsdiagramms in Azure Stream Analytics-Tools für Visual Studio Code. Das Auftragsdiagramm zeigt, wie Daten aus Eingabequellen (Event Hub, IOT Hub usw.) über mehrere Abfrageschritte und schließlich zu Ausgabesenken fließen. Jeder Abfrageschritt wird einem temporären Resultset zugeordnet, das im Skript mithilfe der WITH-Anweisung definiert ist. Sie können die Daten und Metriken in jedem Zwischenresultset anzeigen, um die Ursache des Problems zu ermitteln.

    Job diagram preview result

  3. Stellen Sie bei Verwendung von Zeitstempel nach sicher, dass die Zeitstempel der Ereignisse aktueller sind als die Startzeit des Auftrags.

  4. Beseitigen Sie häufige Fallen wie Folgende:

    • Eine WHERE-Klausel in der Abfrage hat alle Ereignisse herausgefiltert, die das Generieren von Ausgaben verhindert.
    • Der Auftrag ist aufgrund einer fehlerhaften CAST-Funktion nicht erfolgreich. Typumwandlungsfehler lassen sich durch die Verwendung von TRY_CAST vermeiden.
    • Warten Sie bei der Verwendung von Fensterfunktionen die gesamte Fensterdauer ab, um die Ausgabe der Abfrage zu sehen.
    • Der Zeitstempel für Ereignisse steht vor der Startzeit des Auftrags und Ereignisse werden abgelegt.
    • JOIN-Bedingungen stimmen nicht überein. Wenn keine Übereinstimmungen vorhanden sind, gibt es keine Ausgabe.
  5. Stellen Sie sicher, dass die Richtlinien für die Ereignisreihenfolge wie erwartet konfiguriert sind. Wechseln Sie zu Einstellungen, und wählen Sie Ereignisreihenfolge aus. Die Richtlinie wird nicht angewendet, wenn Sie die Abfrage mithilfe der Schaltfläche Testen testen. Dieses Ergebnis ist ein Unterschied zwischen dem Testen im Browser und der tatsächlichen Ausführung des Auftrags.

  6. Debuggen mithilfe von Aktivitäts- und Ressourcenprotokollen:

Die Ressourcenverwendung ist hoch

Stellen Sie sicher, dass Sie die Vorteile der Parallelisierung in Azure Stream Analytics nutzen. Erfahren Sie, wie Sie die Skalierung mit Abfrageparallelisierung von Stream Analytics-Aufträgen betreiben, indem Sie Eingabepartitionen konfigurieren und die Definition der Analyseabfrage anpassen.

Wenn die Ressourcenauslastung konstant mehr als 80 % beträgt, die Verzögerung des Wasserzeichens steigt und die Anzahl der protokollierten Ereignisse zunimmt, erhöhen Sie ggf. die Streamingeinheiten. Eine hohe Auslastung deutet darauf hin, dass der Auftrag fast die maximale Anzahl der bereitgestellten Ressourcen verwendet.

Progressives Debuggen von Abfragen

Bei der Datenverarbeitung in Echtzeit kann es hilfreich sein zu wissen, wie Daten in der Mitte der Abfrage aussehen. Sie können dies anhand des Auftragsdiagramms in Visual Studio erkennen. Wenn Sie nicht über Visual Studio verfügen, können Sie zusätzliche Schritte zur Ausgabe von Zwischendaten durchführen.

Da Eingaben oder Schritte in einen Azure Stream Analytics-Auftrag mehrmals gelesen werden können, lassen sich zusätzliche SELECT INTO-Anweisungen schreiben. Dabei werden Zwischendaten in den Speicher ausgegeben, die Sie auf Richtigkeit untersuchen können, was beim Debuggen eines Programms mithilfe von Überwachungsvariablen erfolgt.

Die folgende Beispielabfrage in einem Azure Stream Analytics-Auftrag weist eine Datenstromeingabe, zwei Verweisdateneingaben und eine Ausgabe in Azure Table Storage auf. Die Abfrage verknüpft Daten aus dem Event Hub und aus zwei Verweisblobs, um den Namen und Informationen zur Kategorie abzurufen:

Example Stream Analytics SELECT INTO query

Beachten Sie, dass der Auftrag ausgeführt wird, aber keine Ereignisse in der Ausgabe erzeugt werden. Auf der hier gezeigten Kachel Überwachung sehen Sie, dass die Eingabe Daten erzeugt, aber Sie wissen nicht, welcher Schritt des JOIN-Vorgangs das Löschen aller Ereignisse verursacht hat.

The Stream Analytics Monitoring tile

In diesem Fall können Sie einige zusätzliche SELECT INTO-Anweisungen zum Protokollieren der JOIN-Zwischenergebnisse und der Daten hinzufügen, die in der Eingabe gelesen werden.

In diesem Beispiel haben wir zwei neue „temporäre Ausgaben“ hinzugefügt. Sie können eine beliebige Senke sein. Hier wird Azure Storage als Beispiel verwendet:

Adding extra SELECT INTO statements to Stream Analytics query

Sie können dann die Abfrage wie folgt umschreiben:

Rewritten SELECT INTO Stream Analytics query

Starten Sie nun den Auftrag erneut, und führen Sie ihn ein paar Minuten aus. Fragen Sie dann „temp1“ und „temp2“ mit dem Visual Studio-Cloud-Explorer ab, um die folgenden Tabellen zu generieren:

Tabelle „temp1“SELECT INTO temp1 table Stream Analytics query

Tabelle „temp2“SELECT INTO temp2 table Stream Analytics query

Wie Sie sehen können, enthalten temp1 und temp2 Daten, und die Namensspalte wird in temp2 ordnungsgemäß aufgefüllt. Da jedoch in der Ausgabe weitere keine Daten vorhanden sind, ist etwas falsch:

SELECT INTO output1 table with no data Stream Analytics query

Nachdem Datenstichproben erstellt wurden, können Sie fast sicher sein, dass der zweite JOIN-Vorgang das Problem ist. Sie können die Verweisdaten aus dem Blob heruntergeladen und untersuchen:

SELECT INTO ref table Stream Analytics query

Wie Sie sehen können, unterscheidet sich das Format der GUID in diesen Verweisdaten vom Format der Spalte [from] in temp2. Deshalb sind die Daten nicht wie erwartet in output1 gelandet.

Sie können das Format der Daten korrigieren, sie in das Verweisblob hochladen und es erneut versuchen:

SELECT INTO temp table Stream Analytics query

Dieses Mal werden die Daten in der Ausgabe wie erwartet formatiert und aufgefüllt.

SELECT INTO final table Stream Analytics query

Hilfe erhalten

Weitere Unterstützung finden Sie auf der Frageseite von Microsoft Q&A (Fragen und Antworten) zu Azure Stream Analytics.

Nächste Schritte