Udostępnij za pośrednictwem


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  

Zobacz też