Поделиться через


CollectTOP

✅ Поток событий Azure Stream Analytics ✅ Fabric

Возвращает массив ранжированных записей, где ранг определяет позицию ранжирования события в окне в соответствии с указанным порядком. Порядок и ранжирование основан на столбцах событий и может быть указан в предложении 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