Bagikan melalui


CollectTOP (Azure Stream Analytics)

Mengembalikan array rekaman berpangkat, di mana peringkat menentukan posisi peringkat peristiwa di jendela sesuai dengan urutan yang ditentukan. Pengurutan/peringkat didasarkan pada kolom peristiwa dan dapat ditentukan dalam klausa ORDER BY.

Sintaks

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

Argumen

<jumlah peristiwa sebagai literal bilangan bulat>

Jumlah peristiwa teratas yang ingin dikumpulkan pengguna dari jendela.

<scalar_expression>

CollectTop mengambil ekspresi skalar opsional yang memungkinkan Anda menentukan proyeksi atas peristiwa yang dikumpulkan. Tanpa parameter , rekaman peristiwa lengkap dikumpulkan.

<nama kolom>

Nama kolom dalam peristiwa input, dengan mana pengurutan akan dilakukan. Hanya pemesanan berdasarkan jenis bigint/float/datetime yang diizinkan.

OVER ([<klausa><PARTITION BY LIMIT DURATION clause> [<WHEN clause>]]

Menentukan grup baris tempat CollectTop diterapkan. Klausa PARTITION BY menentukan bahwa baris dengan kunci partisi yang sama akan dikelompokkan bersama. Klausa LIMIT DURATION menentukan berapa banyak riwayat yang disertakan dalam grup. Klausa WHEN menentukan kondisi boolean untuk baris yang akan disertakan dalam grup. Lihat klausa OVER untuk detail selengkapnya tentang penggunaan.

Jenis Pengembalian

Array rekaman tipe { "rank" : bigint, "value": <projected_type> }, di mana <projected_type> adalah jenis <scalar_expression> rekaman atau jika tidak ada ekspresi yang ditentukan.

Keterangan

Null diperlakukan sebagai nilai minimal, untuk informasi lebih lanjut lihat https://msdn.microsoft.com/library/ms188385.aspx

Contoh

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

Contoh masukan:

Contoh input

Contoh output:

Contoh output

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