Compartir a través de


Windows (Azure Stream Analytics)

La creación de ventanas proporciona una manera de agregar eventos a lo largo de varios intervalos de tiempo en función de las definiciones de ventana específicas. Hay cuatro tipos de ventanas temporales entre las que elegir: saltos de tamaño constante, salto, deslizante y sesión.

La función Windows() amplía este concepto para calcular simultáneamente los resultados de varias definiciones de ventana diferentes. La función Windows() permite especificar más de una definición de ventana. La lógica de consulta se calcula para cada una de estas definiciones de ventana y el resultado es una unión de todos los resultados de la ventana.

Dado que el resultado de la función Windows() contiene una combinación de varias ventanas, debe distinguir entre los distintos resultados. Para ello, se asigna una identidad a cada ventana a la que se puede tener acceso mediante la función del sistema System.Window(). Id. System.Window() devuelve un registro con el identificador como campo.

Hay dos maneras de definir Windows:

  • Asigne identidades únicas mediante la función Window(),Window ( ID , window_definition ), donde ID es una identidad de window_definition y es un valor varchar(max) sin distinción entre mayúsculas y minúsculas único dentro de la construcción de Windows.

  • Sin identidades, en cuyo caso System.Window(). El identificador da como resultado un valor nulo.

Sintaxis

| Windows ( window_definition, … ) 
| Windows ( Window ( id , window_definition ), … ) 
 
window_definition = 
| HoppingWindow ( … 
| TumblingWindow ( … 
| SlidingWindow ( … 
| SessionWindow ( … 
| Hopping ( … 
| Tumbling ( … 
| Sliding ( … 
| Session ( …  
  

Nota:

Las construcciones de Windows no se pueden anidar. Las identidades se deben proporcionar a todas las definiciones de ventana o a ninguna.

Hay nombres de definición de ventana abreviados, como "Saltos de tamaño constante", que se pueden usar en Windows() para evitar la repetición de la palabra "ventana" como en Windows(Window('MyWindow', TumblingWindow(…. Los nombres abreviados también se pueden usar fuera de la construcción de Windows.

No es un error usar System.Window(). Id sin la construcción de Windows, pero su valor será NULL porque no se ha asignado ninguna identidad a la ventana.

Si se especifican definiciones de ventana mediante la función Window(), todas las definiciones de ventana deben usar la función Window() y todos los identificadores que no distinguen mayúsculas de minúsculas deben ser únicos. No se permite null.

Función System.Window()

La función System.Window() solo se puede usar en la cláusula SELECT de la instrucción GROUP BY para recuperar metadatos sobre la ventana de tiempo de agrupación.

La función devuelve un valor de tipo Record que contiene un identificador de campo único, que contiene la identidad de la ventana a la que pertenece el evento.

Ejemplos

Cree una ventana para contar automóviles para cada una de las duraciones 10, 20, 30, 40, 50 y 60 minutos sin identidad de ventana.

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)) 

Cree ventanas con un salto de 1 minuto y cuatro duraciones diferentes: 1 min, 15 min, 30 min y 60 min.

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))) 

Cree ventanas de diferentes tamaños y filtre los resultados en función de la duración de la ventana especificada en la tabla Referencia.

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  

Consulte también