Compartilhar via


Windows

✅ Fluxo de eventos do Azure Stream Analytics ✅ Fabric

O windowing fornece uma maneira de agregar eventos em vários intervalos de tempo, dependendo de definições de janela específicas. Há quatro tipos de janelas temporais para escolher: Caindo, Pulando, Deslizando e Sessão.

A função Windows() estende esse conceito para computar simultaneamente os resultados de várias definições de janela diferentes. A função Windows() permite que você especifique mais de uma definição de janela. A lógica de consulta é computada para cada uma dessas definições de janela e o resultado é uma união de todos os resultados da janela.

Como o resultado da função Windows() contém uma combinação de várias janelas, você precisa distinguir entre os diferentes resultados. Isso é feito atribuindo uma identidade a cada janela que pode ser acessada usando a função do sistema System.Window(). Id. System.Window() retorna um registro com a ID como seu campo.

Há duas maneiras de definir o Windows:

  • Atribua identidades exclusivas usando a função Window(),Window ( ID, window_definition ), em que a ID é uma identidade de window_definition e é um valor diferenciado de maiúsculas de minúsculas(max) no constructo do Windows.

  • Sem identidades, nesse caso , System.Window(). A ID resulta em valor nulo.

Sintaxe

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

Observação

Os constructos do Windows não podem ser aninhados. As identidades devem ser fornecidas a todas as definições de janela ou fornecidas a nenhuma.

Há nomes de definição de janela abreviados, como "Em cascata", que podem ser usados no Windows() para evitar a repetição da palavra "janela" como em Windows(Window('MyWindow', TumblingWindow(…. Os nomes abreviados também podem ser usados fora do constructo do Windows.

Não é um erro usar System.Window(). Id sem a construção do Windows, mas seu valor será nulo porque nenhuma identidade foi dada à janela.

Se as definições de janela forem especificadas usando a função Window(), todas as definições de janela deverão usar a função Window() e todas as IDs que não diferenciam maiúsculas de minúsculas deverão ser exclusivas. Nulo não é permitido.

Função System.Window()

A função System.Window() só pode ser usada na cláusula SELECT da instrução GROUP BY para recuperar metadados sobre a janela de tempo de agrupamento.

A função retorna um valor do tipo Registro que contém uma única ID de campo, que contém a identidade da janela à qual o evento pertence.

Exemplos

Crie uma janela para contar carros para cada uma das durações 10, 20, 30, 40, 50 e 60 minutos sem a identidade da janela.

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

Crie janelas com um salto de 1 minuto e quatro durações diferentes - 1 min, 15 min, 30 min e 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))) 

Crie janelas de tamanhos diferentes e filtre os resultados com base na duração da janela especificada na tabela Referência.

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 também