Windows (Azure Stream Analytics)
Okno umożliwia agregowanie zdarzeń w różnych interwałach czasu w zależności od określonych definicji okien. Istnieją cztery rodzaje okien czasowych do wyboru: Tumbling, Hopping, Sliding i Session.
Funkcja Windows() rozszerza tę koncepcję, aby jednocześnie obliczać wyniki wielu różnych definicji okien. Funkcja Windows() umożliwia określenie więcej niż jednej definicji okna. Logika zapytania jest obliczana dla każdej z tych definicji okna, a wynikiem jest połączenie wszystkich wyników okna.
Ponieważ wynik funkcji Windows() zawiera kombinację wielu okien, należy odróżnić różne wyniki. Odbywa się to przez przypisanie tożsamości do każdego okna, do którego można uzyskać dostęp przy użyciu funkcji systemowej System.Window(). Identyfikator. System.Window() zwraca rekord z identyfikatorem jako jego polem.
Istnieją dwa sposoby definiowania systemu Windows:
Przypisz unikatowe tożsamości przy użyciu funkcji Window(), Window( identyfikator , window_definition ), gdzie identyfikator jest tożsamością window_definition i jest unikatową wartością varchar(max) bez uwzględniania wielkości liter w konstrukcji systemu Windows.
Bez tożsamości, w tym przypadku System.Window(). Identyfikator powoduje wartość null.
Składnia
| Windows ( window_definition, … )
| Windows ( Window ( id , window_definition ), … )
window_definition =
| HoppingWindow ( …
| TumblingWindow ( …
| SlidingWindow ( …
| SessionWindow ( …
| Hopping ( …
| Tumbling ( …
| Sliding ( …
| Session ( …
Uwaga
Nie można zagnieżdżać konstrukcji systemu Windows . Tożsamości muszą być podane do wszystkich definicji okna lub podane do braków.
Istnieją skrócone nazwy definicji okien, takie jak "Tumbling", które mogą być używane w systemie Windows(), aby uniknąć powtórzenia słowa "window", takiego jak w Windows(Window('MyWindow', TumblingWindow(…
pliku . Skrócone nazwy mogą być również używane poza konstrukcją systemu Windows.
Nie jest to błąd podczas korzystania z elementu System.Window(). Identyfikator bez konstrukcji systemu Windows, ale jego wartość będzie mieć wartość null, ponieważ żadna tożsamość nie została podana do okna.
Jeśli definicje okien są określone przy użyciu funkcji Window(), wszystkie definicje okien muszą używać funkcji Window(), a wszystkie identyfikatory bez uwzględniania wielkości liter muszą być unikatowe. Wartość Null jest niedozwolona.
System.Window(), funkcja
Funkcja System.Window() może być używana tylko w klauzuli SELECT instrukcji GROUP BY w celu pobrania metadanych dotyczących przedziału czasu grupowania.
Funkcja zwraca wartość typu Rekord zawierający pojedynczy identyfikator pola, który zawiera tożsamość okna, do którego należy zdarzenie.
Przykłady
Utwórz okno, aby zliczać samochody dla każdego z czasów trwania 10, 20, 30, 40, 50 i 60 minut bez tożsamości okna.
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
TumblingWindow(minute, 30),
TumblingWindow(minute, 40),
TumblingWindow(minute, 50),
TumblingWindow(minute, 60))
Utwórz okna z przeskokiem 1 minuty i cztery różne czasy trwania - 1 min, 15 minut, 30 minut i 60 minut.
SELECT
System.Window().Id,
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
Window('1 min', TumblingWindow(minute, 1)),
Window('15 min', HoppingWindow(minute, 15, 1)),
Window('30 min', HoppingWindow(minute, 30, 1)),
Window('60 min', HoppingWindow(minute, 60, 1)))
Utwórz okna o różnych rozmiarach i filtruj wyniki na podstawie czasu trwania okna określonego w tabeli Odwołania.
WITH HoppingWindowResults AS
(
SELECT
System.Window().Id,
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
Window('H10', Hopping(minute, 10, 5)),
Window('H20', Hopping(minute, 20, 5)),
Window('H30', Hopping(minute, 30, 5)),
Window('H40', Hopping(minute, 40, 5)),
Window('H50', Hopping(minute, 50, 5)),
Window('H60', Hopping(minute, 60, 5)))
)
SELECT HoppingWindowResults.*
FROM HoppingWindowResults
JOIN ReferenceTable ON
HoppingWindowResults.TollId = ReferenceTable.TollId
AND HoppingWindowResults.Id = ReferenceTable.windowId