Partilhar via


Mac OS

✅ Azure Stream Analytics ✅ Fabric Eventstream

As janelas fornecem uma maneira de agregar eventos em vários intervalos de tempo, dependendo de definições de janela específicas. Existem quatro tipos de janelas temporais para escolher: Tumbling, Hopping, Sliding e Session.

A função Windows() estende esse conceito para calcular simultaneamente os resultados de várias definições de janela diferentes. A função Windows() permite especificar mais de uma definição de janela. A lógica de consulta é calculada 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 o Id como seu campo.

Há duas maneiras de definir o Windows:

  • Atribua identidades exclusivas usando a função Window(),Window ( ID , window_definition ), onde ID é uma identidade de window_definition e é um valor varchar(max) exclusivo que não diferencia maiúsculas de minúsculas dentro da construção do Windows.

  • Sem identidades, caso em que System.Window(). 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

As construções do Windows não podem ser aninhadas. As identidades devem ser dadas a todas as definições de janela ou dadas a nenhuma.

Existem nomes de definição de janela encurtados, como "Tumbling", 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 da construção 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 Record contendo um único campo Id, 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 identidade de 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  

Ver também