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:
Exemplo de saída:
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