CollectTOP (Azure Stream Analytics)
Возвращает массив ранжированных записей, где ранг определяет ранжированную позицию события в окне в соответствии с заданным порядком. Порядок и ранжирование основаны на столбцах событий и могут быть указаны в предложении ORDER BY.
Синтаксис
-- 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>])
Аргументы
<число событий в виде целочисленного литерала>
Количество основных событий, которые пользователь хочет собрать из окна.
<scalar_expression>
CollectTop принимает необязательное скалярное выражение, которое позволяет указать проекцию по собранным событиям. Без параметра собираются полные записи событий.
<имя столбца>
Имя столбца во входном событии, по которому будет выполнено упорядочение. Разрешено упорядочивание только по типам bigint,float/datetime.
OVER ([<ПРЕДЛОЖЕНИЕ<>PARTITION BY LIMIT DURATION> [<ПРЕДЛОЖЕНИЕ> WHEN]]
Определяет группу строк, к которым применяется CollectTop. Предложение PARTITION BY указывает, что строки с одним ключом секции будут сгруппированы. Предложение LIMIT DURATION указывает, какой объем журнала включен в группу. Предложение WHEN задает логическое условие для строк, которые должны быть включены в группу. Дополнительные сведения об использовании см. в предложении OVER .
Типы возвращаемых данных
Массив записей типа { "rank": bigint, "value": <projected_type> }, где <projected_type> является типом <scalar_expression>
или записью, если выражение не указано.
Комментарии
Null обрабатывается как минимальное значение. Дополнительные сведения см. в статье https://msdn.microsoft.com/library/ms188385.aspx
Примеры
SELECT
value1,
CollectTop(2) OVER (ORDER BY value2 ASC, value3 DESC) as top1
FROM testinput timestamp by time
GROUP BY TumblingWindow(second, 5), value1
Пример входных данных:
Выходные данные примера:
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