Partilhar via


CollectTOP (Azure Stream Analytics)

Devolve uma matriz de registos classificados, em que a classificação define a posição de classificação do evento na janela de acordo com a ordenação especificada. A ordenação/classificação baseia-se em colunas de eventos e pode ser especificada na cláusula ORDER BY.

Sintaxe

-- Aggregate Function Syntax
CollectTop(<number of events as integer literal> [ , <scalar_expression> ]) OVER (ORDER BY (<column name> [ASC |DESC])+)

-- Analytic Function Syntax
CollectTop(<number of events as integer literal> [ , <scalar_expression> ]) OVER ([<PARTITION BY clause>] ORDER BY (<column name> [ASC | DESC])+ <LIMIT DURATION clause>  [<WHEN clause>])

Argumentos

<número de eventos como literal de número inteiro>

O número de eventos principais que o utilizador quer recolher a partir da janela.

<scalar_expression>

CollectTop utiliza uma expressão escalar opcional que lhe permite especificar uma projeção sobre os eventos recolhidos. Sem o parâmetro, são recolhidos registos de eventos completos.

<nome da coluna>

Nome da coluna no evento de entrada, através do qual a ordenação será efetuada. Só é permitida a ordenação por tipos bigint/float/datetime.

OVER ([<PARTITION BY clause><LIMIT DURATION clause> [<WHEN clause>]]

Determina o grupo de linhas sobre o qual CollectTop é aplicado. A cláusula PARTITION BY especifica que as linhas com a mesma chave de partição serão agrupadas. A cláusula LIMIT DURATION especifica a quantidade de histórico incluída no grupo. A cláusula WHEN especifica uma condição booleana para que as linhas sejam incluídas no grupo. Veja a cláusula OVER para obter mais detalhes sobre a utilização.

Tipos de Retorno

Matriz de registos do tipo { "rank" : bigint, "value": <projected_type> }, em <que projected_type> é o tipo do <scalar_expression> ou um registo se não for especificada nenhuma expressão.

Observações

Nulo é tratado como o valor mínimo, para obter mais informações, veja https://msdn.microsoft.com/library/ms188385.aspx

Exemplos

SELECT   
    value1,  
    CollectTop(2) OVER (ORDER BY value2 ASC, value3 DESC) as top1  
FROM testinput timestamp by time  
GROUP BY TumblingWindow(second, 5), value1  

Entrada de exemplo:

Entrada de exemplo

Exemplo de saída:

Saída de exemplo

SELECT   
    value1,  
    CollectTop(2, x + y) OVER (ORDER BY value2 ASC, value3 DESC) as top1  
FROM testinput timestamp by time  
GROUP BY TumblingWindow(second, 5), value1