Sdílet prostřednictvím


CollectTOP (Azure Stream Analytics)

Vrátí matici seřazených záznamů, kde pořadí definuje pozici řazení události v okně podle zadaného pořadí. Řazení/řazení je založené na sloupcích událostí a je možné je zadat v klauzuli ORDER BY.

Syntaxe

-- 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>])

Argumenty

<Počet událostí jako celočíselný literál>

Počet hlavních událostí, které chce uživatel z okna shromáždit.

<Scalar_expression>

CollectTop přebírá volitelný skalární výraz, který umožňuje určit projekci shromážděných událostí. Bez parametru se shromažďují úplné záznamy událostí.

<název sloupce>

Název sloupce ve vstupní události, podle kterého se bude provádět řazení. Je povoleno pouze řazení podle typu bigint/float/datetime.

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

Určuje skupinu řádků, na které se použije CollectTop. Klauzule PARTITION BY určuje, že řádky se stejným klíčem oddílu se seskupí dohromady. Klauzule LIMIT DURATION určuje, kolik historie je součástí skupiny. Klauzule WHEN určuje logickou podmínku pro řádky, které mají být zahrnuty do skupiny. Další podrobnosti o využití najdete v klauzuli OVER .

Návratové typy

Pole záznamů typu { "rank" : bigint, "value": <projected_type> }, kde <projected_type> je typ <scalar_expression> nebo záznamu, pokud není zadaný žádný výraz.

Poznámky

Null se považuje za minimální hodnotu. Další informace najdete v tématu . https://msdn.microsoft.com/library/ms188385.aspx

Příklady

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

Příklad vstupu:

Příklad vstupu

Příklad výstupu:

Příklad výstupu

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