operator summarize
Menghasilkan tabel yang mengagregasi isi tabel input.
Sales | summarize NumTransactions=count(), Total=sum(UnitPrice * NumUnits) by Fruit, StartOfMonth=startofmonth(SellDateTime)
Mengembalikan tabel dengan berapa banyak transaksi penjualan serta jumlah total per buah dan bulan penjualan. Kolom output menunjukkan jumlah transaksi, nilai transaksi, hasil, dan tanggalwaktu awal bulan saat transaksi direkam.
T | summarize count() by price_range=bin(price, 10.0)
Tabel yang menunjukkan berapa banyak item yang memiliki harga di setiap interval [0,10.0], [10.0,20.0], dan seterusnya. Contoh ini memiliki kolom untuk jumlah dan untuk rentang harga. Semua kolom input lainnya diabaikan.
Sintaks
T| summarize [SummarizeParameters] [[Column=] Aggregation [, ...]] [by [Column=] GroupExpression [, ...]]
Argumen
Column: Nama opsional untuk kolom hasil. Default-nya adalah nama yang berasal dari ekspresi.
Aggregation: Panggilan ke fungsi agregasi seperti
count()atauavg(), dengan nama kolom sebagai argumen.GroupExpression: Ekspresi skalar yang dapat mereferensikan data input. Output akan memiliki banyak rekaman karena terdapat nilai yang berbeda dari semua ekspresi grup.
SummarizeParameters: Nol atau beberapa parameter (yang dipisahkan spasi) dalam bentuk Nama
=Nilai yang mengontrol perilaku. Parameter berikut didukung oleh:Nama Deskripsi hint.num_partitionsMenentukan jumlah partisi yang digunakan untuk membagikan beban kueri pada node kluster. Lihat kueri acak hint.shufflekey=<key>Kueri shufflekeymembagikan muatan kueri pada node kluster, menggunakan kunci ke data partisi. Lihat kueri shufflehint.strategy=shuffleKueri strategi shufflemembagikan muatan kueri pada node kluster, di mana setiap simpul akan memproses satu partisi data. Lihat kueri shuffle
Catatan
Ketika tabel input kosong, output akan bergantung pada penggunaan GroupExpression:
- Jika GroupExpression tidak disediakan, output akan menampilkan baris tunggal (kosong).
- Jika GroupExpression disediakan, output tidak akan menampilkan baris tunggal.
Mengembalikan
Baris input disusun ke dalam beberapa grup yang memiliki nilai ekspresi by yang sama. Kemudian fungsi agregasi yang ditentukan dihitung di setiap grup, menghasilkan baris untuk setiap grup. Hasilnya berisi kolom by serta setidaknya satu kolom untuk setiap agregat yang dihitung. (Beberapa fungsi agregasi mengembalikan beberapa kolom.)
Hasilnya memiliki baris sebanyak kombinasi nilai by yang berbeda (dapat berupa nol). Jika tidak ada kunci grup yang disediakan, hasilnya akan memiliki satu rekaman.
Untuk meringkas rentang nilai numerik, gunakan bin() untuk mengurangi rentang ke nilai diskrit.
Catatan
- Meskipun Anda dapat memberikan ekspresi arbitrer untuk ekspresi agregasi dan pengelompokan, akan lebih efisien untuk menggunakan nama kolom sederhana, atau menerapkan
bin()ke kolom numerik. - Bin per jam otomatis untuk kolom tanggalwaktu tidak lagi didukung. Sebagai gantinya, gunakan binning eksplisit. Contohnya:
summarize by bin(timestamp, 1h)
Mengagregasi nilai default
Tabel berikut meringkas nilai default agregasi:
| Operator | Nilai default |
|---|---|
count(), countif(), dcount(), dcountif() |
0 |
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() |
array dinamis kosong ([]) |
| Semua lainnya | null |
Saat menggunakan agregat ini pada entitas yang menyertakan nilai null, nilai null akan diabaikan dan tidak akan diikutsertakan dalam perhitungan (lihat contoh di bawah).
Contoh
Kombinasi unik
Tentukan kombinasi unik dari ActivityType dan CompletionStatus yang ada dalam tabel. Tidak ada fungsi agregasi, hanya tombol kelompokkan menurut. Output hanya akan menampilkan kolom untuk hasil tersebut:
Activities | summarize by ActivityType, completionStatus
ActivityType |
completionStatus |
|---|---|
dancing |
started |
singing |
started |
dancing |
abandoned |
singing |
completed |
Stempel waktu minimum dan maksimum
Menemukan stempel waktu minimum dan maksimum dari semua rekaman dalam tabel Aktivitas. Tidak ada klausul kelompokkan menurut, jadi hanya ada satu baris di output:
Activities | summarize Min = min(Timestamp), Max = max(Timestamp)
Min |
Max |
|---|---|
1975-06-09 09:21:45 |
2015-12-24 23:45:00 |
Hitungan jelas
Buat baris untuk setiap benua, menunjukkan jumlah kota tempat aktivitas terjadi. Karena ada beberapa nilai untuk "benua", tidak ada fungsi pengelompokan yang diperlukan dalam klausul 'menurut':
Activities | summarize cities=dcount(city) by continent
cities |
continent |
|---|---|
4290 |
Asia |
3267 |
Europe |
2673 |
North America |
Histogram
Contoh berikut menghitung histogram untuk setiap jenis aktivitas. Karena Duration memiliki banyak nilai, gunakan bin untuk mengelompokkan nilainya ke dalam interval 10 menit:
Activities | summarize count() by ActivityType, length=bin(Duration, 10m)
count_ |
ActivityType |
length |
|---|---|---|
354 |
dancing |
0:00:00.000 |
23 |
singing |
0:00:00.000 |
2717 |
dancing |
0:10:00.000 |
341 |
singing |
0:10:00.000 |
725 |
dancing |
0:20:00.000 |
2876 |
singing |
0:20:00.000 |
| ... |
Mengagregasi nilai default
Ketika input operator summarize memiliki setidaknya satu kunci kelompokkan menurut yang kosong, hasilnya juga kosong.
Ketika input operator summarize tidak memiliki kunci kelompokkan menurut yang kosong, hasilnya adalah nilai default dari agregat yang digunakan dalam summarize:
datatable(x:long)[]
| summarize any(x), arg_max(x, x), arg_min(x, x), avg(x), buildschema(todynamic(tostring(x))), max(x), min(x), percentile(x, 55), hll(x) ,stdev(x), sum(x), sumif(x, x > 0), tdigest(x), variance(x)
| any_x | max_x | max_x_x | min_x | min_x_x | avg_x | schema_x | max_x1 | min_x1 | percentile_x_55 | hll_x | stdev_x | sum_x | sumif_x | tdigest_x | variance_x |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
datatable(x:long)[]
| summarize count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
| count_x | countif_ | dcount_x | dcountif_x |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
datatable(x:long)[]
| summarize make_set(x), make_list(x)
| set_x | list_x |
|---|---|
| [] | [] |
Rata-rata agregat menjumlahkan semua non-null dan hanya menghitung yang diikutsertakan dalam penghitungan (tidak akan memperhitungkan null).
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)
| sum_y | avg_y |
|---|---|
| 5 | 5 |
Penghitungan reguler yang akan menghitung null:
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)
| count_y |
|---|
| 2 |
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize make_set(y), make_set(y)
| set_y | set_y1 |
|---|---|
| [5.0] | [5.0] |