Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano typowe problemy z opracowywaniem zapytań usługi Azure Stream Analytics, sposobem rozwiązywania problemów z zapytaniami i rozwiązywaniem problemów. Wiele kroków rozwiązywania problemów wymaga włączenia dzienników zasobów dla zadania usługi Stream Analytics. Jeśli nie masz włączonych dzienników zasobów, zobacz Rozwiązywanie problemów z Azure Stream Analytics przy użyciu dzienników zasobów.
Zapytanie nie generuje oczekiwanego wyniku
Sprawdź błędy, testując lokalnie:
- W portalu Azure, na zakładce Zapytanie, wybierz Test. Użyj pobranych przykładowych danych, aby przetestować zapytanie. Sprawdź wszelkie błędy i spróbuj je poprawić.
- Możesz także przetestować swoje zapytanie lokalnie, korzystając z narzędzi Azure Stream Analytics dla Visual Studio lub Visual Studio Code.
Debugowanie zapytań krok po kroku przy użyciu diagramu zadań w narzędziach usługi Azure Stream Analytics dla programu Visual Studio Code. Diagram zadania pokazuje, jak dane przepływają ze źródeł wejściowych, na przykład z usług Azure Event Hubs i Azure IoT Hub, przez wiele etapów zapytań, a ostatecznie do ujść wyjściowych. Skrypt mapuje każdy krok zapytania na tymczasowy zestaw wyników, który definiujesz za pomocą instrukcji WITH. Zobacz dane i metryki w każdym zestawie wyników pośrednich, aby znaleźć źródło problemu.
Jeśli używasz opcji Znacznik czasu według, sprawdź, czy zdarzenia mają znaczniki czasu późniejsze niż czas rozpoczęcia zadania.
Eliminowanie typowych pułapek, takich jak:
- Klauzula WHERE w zapytaniu filtrowała wszystkie zdarzenia, więc zapytanie nie generuje żadnego wyjścia.
- Funkcja CAST kończy się niepowodzeniem, powodując niepowodzenie zadania. Aby uniknąć błędów rzutowania typów, użyj TRY_CAST zamiast tego.
- Gdy używasz funkcji okna, poczekaj na cały czas trwania okna, aby wyświetlić dane wyjściowe zapytania.
- Znacznik czasu dla zdarzeń poprzedza moment rozpoczęcia zadania, więc zadanie usuwa zdarzenia.
- Warunki JOIN nie są zgodne. Jeśli nie ma dopasowań, zapytanie nie generuje żadnego wyjścia.
Upewnij się, że konfigurujesz polityki kolejności zdarzeń zgodnie z oczekiwaniami. Przejdź do pozycji Ustawienia i wybierz pozycję Kolejność zdarzeń. Przycisk Test nie stosuje polityki podczas testowania zapytania. Ten wynik to jedna z różnic między testowaniem w przeglądarce a uruchamianiem zadania w produkcji.
Debugowanie przy użyciu dzienników aktywności i zasobów:
- Użyj dzienników aktywności i filtruj, aby zidentyfikować i debugować błędy.
- Użyj dzienników zasobów zadania, aby zidentyfikować i debugować błędy.
Debug queries progressively (Stopniowe debugowanie zapytań)
W przetwarzaniu danych w czasie rzeczywistym pomaga wiedzieć, jak wyglądają dane w trakcie zapytania. Aby zobaczyć dane pośrednie, użyj diagramu zadań w Visual Studio. Jeśli nie masz Visual Studio, możesz podjąć dodatkowe kroki, aby wypisać dane pośrednie.
Ponieważ Azure Stream Analytics może wielokrotnie odczytywać dane wejściowe lub kroki zadania, możesz pisać dodatkowe SELECT INTO instrukcje. Dzięki temu dane pośrednie trafiają do pamięci i pozwalają sprawdzić poprawność danych, tak jak zmienne zegarka podczas debugowania programu.
Poniższe przykładowe zapytanie w zadaniu usługi Azure Stream Analytics ma jedno wejście strumieniowe, dwa wejścia danych referencyjnych oraz jedno wyjście do usługi Azure Table Storage. Zapytanie łączy dane z centrum zdarzeń z danymi z dwóch referencyjnych obiektów blob, aby uzyskać informacje o nazwie i kategorii:
Zadanie jest uruchomione, ale nie generuje żadnych zdarzeń na wyjściu. Na kafelku Monitoring, pokazanym tutaj, widać, że na wejściu są generowane dane, ale nie wiesz, który krok operacji JOIN odrzucił wszystkie zdarzenia.
W takiej sytuacji możesz dodać kilka dodatkowych SELECT INTO instrukcji, aby "logować" wyniki pośrednie JOIN oraz dane odczytywane z wejścia.
W tym przykładzie dodaliśmy dwa nowe "tymczasowe wyjścia". Mogą być dowolnym zlewem, jaki chcesz. W tym miejscu użyjemy usługi Azure Storage jako przykładu:
Następnie możesz ponownie napisać zapytanie w następujący sposób:
Teraz uruchom zadanie ponownie i pozostaw je w działaniu przez kilka minut. Następnie zapytaj temp1 i temp2 za pomocą Visual Studio Cloud Explorer wygeneruj następujące tabele:
tabela temp1
tabela temp2
Jak widać, temp1 i temp2 oba zawierają dane, a kolumna name jest poprawnie wypełniona w elemencie temp2. Jednak ponieważ wynik nadal nie zawiera danych, coś jest nie tak:
Próbkując dane, można być niemal pewnym, że problem leży w drugim JOIN. Możesz pobrać dane referencyjne z bloba i je przejrzeć:
Jak widać, format GUID w tych danych referencyjnych różni się od formatu kolumny [from] w temp2. Dlatego dane nie dotarły do output1 zgodnie z oczekiwaniami.
Popraw format danych, prześlij go do referencyjnego blobu i spróbuj ponownie:
Tym razem dane w danych wyjściowych są formatowane i wypełniane zgodnie z oczekiwaniami.
Wysokie wykorzystanie zasobów
Upewnij się, że korzystasz z równoległości w usłudze Azure Stream Analytics. Naucz się skalować z równoległością zapytań w zadaniach Stream Analytics, konfigurując partycje wejściowe i dostosowując definicję zapytań analitycznych.
Jeśli wykorzystanie zasobów stale trwa ponad 80%, opóźnienie limitu rośnie, a liczba zdarzeń zaległych rośnie, rozważ zwiększenie liczby jednostek przesyłania strumieniowego. Wysokie wykorzystanie wskazuje, że zadanie używa blisko maksymalnych przydzielonych zasobów.
Uzyskaj pomoc
Aby uzyskać dalszą pomoc, wypróbuj stronę pytań i odpowiedzi firmy Microsoft dotyczącą usługi Azure Stream Analytics.
Treści powiązane
- Wprowadzenie do usługi Azure Stream Analytics
- Get started using Azure Stream Analytics (Rozpoczynanie pracy z usługą Azure Stream Analytics)
- Scale Azure Stream Analytics jobs (Skalowanie zadań usługi Azure Stream Analytics)
- Azure Stream Analytics Query Language Reference (Dokumentacja dotycząca języka zapytań usługi Azure Stream Analytics)
- Azure Stream Analytics Management REST API Reference (Dokumentacja interfejsu API REST zarządzania usługą Azure Stream Analytics)