operator summarize

Menghasilkan tabel yang mengagregasi isi tabel input.

Sintaks

T| summarize [ SummarizeParameters ] [[Column=] Aggregation [, ...]] [by [Column=] GroupExpression [, ...]]

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan Deskripsi
Kolom string Nama untuk kolom hasil. Default-nya adalah nama yang berasal dari ekspresi.
Agregasi string ✔️ Panggilan ke fungsi agregasi seperti count() atau avg(), dengan nama kolom sebagai argumen.
GroupExpression skalar ✔️ Ekspresi skalar yang dapat mereferensikan data input. Output akan memiliki banyak rekaman karena terdapat nilai yang berbeda dari semua ekspresi grup.
SummarizeParameters string Nol atau lebih parameter yang dipisahkan spasi dalam bentukNilaiNama= yang mengontrol perilaku. Lihat parameter yang didukung.

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.

Parameter yang didukung

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 acak

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)

Nilai default agregasi

Tabel berikut meringkas nilai default agregasi:

Operator Nilai default
count(), countif(), dcount(), dcountif(), count_distinct(), sum(), sumif(), variance(), varianceif(), stdev(), stdevif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() array dinamis kosong ([])
Semua lainnya null

Catatan

Saat menerapkan agregat ini ke entitas yang menyertakan nilai null, nilai null diabaikan dan tidak memperhitungkan perhitungan. Misalnya, lihat Agregat nilai default.

Contoh

Meringkas harga berdasarkan buah dan pemasok.

Kombinasi unik

Kueri berikut menentukan kombinasi State unik dan EventType ada untuk badai yang mengakibatkan cedera langsung. Tidak ada fungsi agregasi, hanya tombol kelompokkan menurut. Output hanya akan menampilkan kolom untuk hasil tersebut.

StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType

Output

Tabel berikut ini hanya memperlihatkan 5 baris pertama. Untuk melihat output lengkap, jalankan kueri.

Provinsi EventType
TEXAS Angin Badai Petir
TEXAS Banjir Bandang
TEXAS Cuaca Musim Dingin
TEXAS Angin Kencang
TEXAS Banjir
... ...

Stempel waktu minimum dan maksimum

Menemukan badai hujan lebat minimum dan maksimum di Hawaii. Tidak ada klausul group-by, jadi hanya ada satu baris dalam output.

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

Output

Minimum Maks
01:08:00 11:55: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':

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

Output

Tabel berikut ini hanya memperlihatkan 5 baris pertama. Untuk melihat output lengkap, jalankan kueri.

Provinsi TypeOfStorms
TEXAS 27
CALIFORNIA 26
PENNSYLVANIA 25
GEORGIA 24
ILLINOIS 23
... ...

Histogram

Contoh berikut menghitung jenis peristiwa badai histogram yang memiliki badai yang berlangsung lebih dari 1 hari. Karena Duration memiliki banyak nilai, gunakan bin() untuk mengelompokkan nilainya ke dalam interval 1 hari.

StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length

Output

EventType Panjang EventCount
Kekeringan 30.00:00:00 1646
Wildfire 30.00:00:00 11
Panas 30.00:00:00 14
Banjir 30.00:00:00 20
Hujan Lebat 29.00:00:00 42
... ... ...

Mengagregasi nilai default

Ketika input summarize operator memiliki setidaknya satu kunci group-by kosong, hasilnya juga kosong.

Saat input summarize operator tidak memiliki kunci grup demi grup kosong, hasilnya adalah nilai default agregat yang digunakan dalam summarize Untuk informasi selengkapnya, lihat Nilai default agregasi.

datatable(x:long)[]
| summarize any_x=take_any(x), arg_max_x=arg_max(x, *), arg_min_x=arg_min(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)

Output

any_x arg_max_x arg_min_x avg_x schema_x max_x min_x percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
NaN 0 0 0 0

Hasilnya avg_x(x) adalah NaN karena pembagian dengan 0.

datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)

Output

count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)

Output

set_x list_x
[] []

Rata-rata agregat menjumlahkan semua non-null dan hanya menghitung yang berpartisipasi dalam perhitungan (tidak akan memperhitungkan null).

range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)

Output

sum_y avg_y
15 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)

Output

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)

Output

set_y set_y1
[5.0] [5.0]