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() atau avg(), 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_partitions Menentukan jumlah partisi yang digunakan untuk membagikan beban kueri pada node kluster. Lihat kueri acak
    hint.shufflekey=<key> Kueri shufflekey membagikan muatan kueri pada node kluster, menggunakan kunci ke data partisi. Lihat kueri shuffle
    hint.strategy=shuffle Kueri strategi shuffle membagikan 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

Summarize price by fruit and supplier.

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]