Omówienie przetwarzania zdarzeń
Azure Stream Analytics to usługa służąca do złożonego przetwarzania zdarzeń i analizowania danych przesyłanych strumieniowo. Usługa Stream Analytics służy do:
- Pobranie danych z wejścia, takich jak Azure Event Hub, Azure IoT Hub lub kontener obiektów blob w Azure Storage.
- Przetwarzaj dane przy użyciu zapytania, aby wybrać, dokonać projekcji i zagregować wartości danych.
- Zapisz wyniki w danych wyjściowych, takich jak Azure Data Lake Gen 2, Azure SQL Database, Azure Synapse Analytics, Azure Functions, Azure Event Hub, Microsoft Power BI lub inne.
Po uruchomieniu zapytanie usługi Stream Analytics będzie uruchamiane w sposób ciągły, przetwarzając nowe dane po nadejściu danych wejściowych i przechowując wyniki w danych wyjściowych.
Usługa Stream Analytics gwarantuje dokładnie jednokrotne przetwarzanie zdarzeń i co najmniej jednokrotne dostarczanie zdarzeń, więc zdarzenia nigdy nie zostaną utracone. Posiada wbudowane funkcje przywracania w razie niepowodzenia dostarczenia zdarzenia. Ponadto usługa Stream Analytics zapewnia wbudowane punkty kontrolne, aby zachować stan zadania i uzyskać powtarzalne wyniki. Ponieważ usługa Azure Stream Analytics to rozwiązanie typu "platforma jako usługa" (PaaS), jest w pełni zarządzane i wysoce niezawodne. Wbudowana integracja z różnymi źródłami i miejscami docelowymi zapewnia elastyczny model programowania. Silnik Stream Analytics umożliwia przetwarzanie w pamięci, dzięki czemu zapewnia wysoką wydajność.
Zadania i klastry usługi Azure Stream Analytics
Najprostszym sposobem użycia usługi Azure Stream Analytics jest utworzenie zadania usługi Stream Analytics w subskrypcji platformy Azure, skonfigurowanie danych wejściowych i wyjściowych oraz zdefiniowanie zapytania, które będzie używane do przetwarzania danych. Zapytanie jest wyrażane przy użyciu składni języka zapytań strukturalnych (SQL) i może uwzględniać statyczne dane referencyjne z wielu źródeł danych w celu dostarczania wartości odnośników, które można połączyć z danymi przesyłanymi strumieniowo pozyskanymi z danych wejściowych.
Jeśli wymagania dotyczące przetwarzania strumieniowego są złożone lub intensywnie obciążające zasoby, możesz utworzyć klaster usługi Stream Analysis, który używa tego samego aparatu przetwarzania podstawowego co zadanie usługi Stream Analytics, ale w dedykowanej dzierżawie (więc przetwarzanie nie ma wpływu na innych klientów) i z możliwością skonfigurowania skalowalności, która umożliwia zdefiniowanie odpowiedniej równowagi przepływności i kosztów dla konkretnego scenariusza.
Dane wejściowe
Usługa Azure Stream Analytics może pozyskiwać dane z następujących rodzajów danych wejściowych:
- Azure Event Hubs
- Azure IoT Hub
- Azure Blob magazynowanie
- Azure Data Lake Storage Gen2
Dane wejściowe są zwykle używane do odwołowania się do źródła danych przesyłanych strumieniowo, które są przetwarzane w miarę dodawania nowych rekordów zdarzeń. Ponadto można zdefiniować dane wejściowe referencyjne używane do pozyskiwania danych statycznych w celu rozszerzenia danych strumienia zdarzeń w czasie rzeczywistym. Można na przykład pozyskać strumień danych obserwacji pogody w czasie rzeczywistym, który zawiera unikatowy identyfikator dla każdej stacji pogodowej, i rozszerzyć te dane przy użyciu statycznych danych wejściowych referencyjnych, które pasują do identyfikatora stacji pogody, aby uzyskać bardziej znaczącą nazwę.
Wyniki
Dane wyjściowe to miejsca docelowe, do których są wysyłane wyniki przetwarzania strumienia. Usługa Azure Stream Analytics obsługuje szeroką gamę danych wyjściowych, których można użyć do:
- Przechowywanie wyników przetwarzania strumienia w celu dalszej analizy, na przykład przez załadowanie ich do jeziora danych lub hurtowni danych.
- Wyświetlanie wizualizacji strumienia danych w czasie rzeczywistym; na przykład przez dołączenie danych do zestawu danych w usłudze Microsoft Power BI.
- Generuj przefiltrowane lub podsumowane zdarzenia na potrzeby przetwarzania podrzędnego; na przykład przez zapisanie wyników przetwarzania strumienia w centrum zdarzeń.
Kwerendy
Logika przetwarzania strumieniowego jest hermetyzowana w zapytaniu. Zapytania są definiowane przy użyciu instrukcji SQL, które wybierają pola danych Z jednego lub więcej źródeł danych, filtrują lub agregują dane i zapisują wyniki do danych wyjściowych. Na przykład, następujące zapytanie filtruje zdarzenia z wejścia weather-events, aby uwzględnić tylko dane z zdarzeń o wartości temperatury mniejszej niż 0, i zapisuje wyniki do wyjścia cold-temps.
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
Pole o nazwie EventProcessedUtcTime jest tworzone automatycznie w celu zdefiniowania czasu przetwarzania zdarzenia przez zapytanie usługi Azure Stream Analytics. To pole umożliwia określenie znacznika czasu zdarzenia lub jawne określenie innego pola DateTime przy użyciu klauzuli TIMESTAMP BY , jak pokazano w tym przykładzie. W zależności od danych wejściowych, z których dane przesyłane strumieniowo są odczytywane, co najmniej jedno potencjalne pola znacznika czasu mogą być tworzone automatycznie; na przykład w przypadku korzystania z danych wejściowych usługi Event Hubs jest generowane pole o nazwie EventQueuedUtcTime w celu zarejestrowania czasu odebrania zdarzenia w kolejce centrum zdarzeń.
Pole używane jako znacznik czasu jest ważne podczas agregowania danych w oknach czasowych, które zostały omówione w dalszej części.