CollectTOP (Azure Stream Analytics)
Retorna uma matriz de registros classificados, onde a classificação define a posição de classificação do evento na janela de acordo com a ordem especificada. 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 inteiro>
O número de eventos principais que o usuário deseja coletar da janela.
<scalar_expression>
CollectTop usa uma expressão escalar opcional que permite especificar uma projeção sobre os eventos coletados. Sem o parâmetro , os registros de eventos completos são coletados.
<nome da coluna>
Nome da coluna no evento de entrada, pelo qual classificação será feita. É permitido apenas pedidos por tipos float/bigint/datetime.
OVER ([<Cláusula LIMIT DURATION> da cláusula><PARTITION BY [<cláusula> WHEN]]
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 quanto histórico está incluído no grupo. A cláusula WHEN especifica uma condição booliana para as linhas a serem incluídas no grupo. Consulte a cláusula OVER para obter mais detalhes sobre o uso.
Tipos de retorno
Matriz de registros do tipo { "rank": bigint, "value": <projected_type> }, em <que projected_type> é o tipo do <scalar_expression>
ou um registro se nenhuma expressão for especificada.
Comentários
Nulo é tratado como o valor mínimo, para obter mais informações, examine 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:
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