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