Bagikan melalui


operator reduce

Mengelompokkan sekumpulan string bersama-sama berdasarkan kesamaan nilai.

Untuk setiap grup tersebut, operator mengembalikan pattern, , countdan representative. Yang pattern terbaik menggambarkan grup, di mana * karakter mewakili kartubebas. count adalah jumlah nilai dalam grup, dan representative merupakan salah satu nilai asli dalam grup.

Sintaks

T | reduce [kind = ReduceKind] by Expr [with [threshold = Threshold] [, = characters Characters]]

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
Expr string ✔️ Nilai yang akan dikurangi.
Ambang real Nilai antara 0 dan 1 yang menentukan pecahan minimum baris yang diperlukan untuk mencocokkan kriteria pengelompokan untuk memicu operasi pengurangan. Nilai defaultnya adalah 0,1.

Sebaiknya tetapkan nilai ambang kecil untuk input besar. Dengan nilai ambang yang lebih kecil, nilai yang lebih mirip dikelompokkan bersama-sama, menghasilkan grup yang lebih sedikit tetapi lebih mirip. Nilai ambang yang lebih besar membutuhkan lebih sedikit kesamaan, sehingga menghasilkan lebih banyak grup yang kurang serupa. Lihat Contoh.
Karakter string Daftar karakter yang memisahkan antara istilah. Defaultnya adalah setiap karakter numerik non-ascii. Misalnya, lihat Perilaku parameter Karakter.
ReduceKind string Satu-satunya nilai yang valid adalah source. Jika source ditentukan, operator menambahkan Pattern kolom ke baris yang ada dalam tabel alih-alih mengagregasi dengan Pattern.

Mengembalikan

Tabel dengan baris sebanyak ada grup dan kolom berjudul pattern, , countdan representative. Yang pattern terbaik menggambarkan grup, di mana * karakter mewakili kartubebas, atau tempat penampung untuk string penyisipan arbitrer. count adalah jumlah nilai dalam grup, dan representative merupakan salah satu nilai asli dalam grup.

Misalnya, hasil dari reduce by city mungkin mencakup:

Pola Hitung Perwakilan
San * 5182 San Bernard
Saint * 2846 Saint Lucy
Moscow 3726 Moscow
* -on- * 2730 One -on- One
Paris 2716 Paris

Contoh

Nilai ambang kecil

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.001 , characters = "X" 

Hasil

Pola Hitung Perwakilan
MachineLearning* 1000 MachineLearningX4

Nilai ambang besar

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.9 , characters = "X" 

Hasil

Pola Hitung Perwakilan
MachineLearning* 177 MachineLearningX9
MachineLearning* 102 MachineLearningX0
MachineLearning* 106 MachineLearningX1
MachineLearning* 96 MachineLearningX6
MachineLearning* 110 MachineLearningX4
MachineLearning* 100 MachineLearningX3
MachineLearning* 99 MachineLearningX8
MachineLearning* 104 MachineLearningX7
MachineLearning* 106 MachineLearningX2

Perilaku parameter Karakter

Jika parameter Karakter tidak ditentukan, maka setiap karakter numerik non-ascii menjadi pemisah istilah.

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

Hasil

Pola Hitung Perwakilan
Lainnya… 10

Namun, jika Anda menentukan bahwa "Z" adalah pemisah, maka seolah-olah setiap nilai dalam str adalah 2 istilah: foo dan tostring(x):

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"

Hasil

Pola Hitung Perwakilan
Foo* 10 fooZ1

Terapkan reduce ke input yang disanitasi

Contoh berikut menunjukkan kemungkinan salah satu contoh menerapkan operator reduce ke input yang "disanitasi", yang GUID di kolom yang sedang dikurangi diganti sebelum proses pengurangan

// Start with a few records from the Trace table.
Trace | take 10000
// We will reduce the Text column which includes random GUIDs.
// As random GUIDs interfere with the reduce operation, replace them all
// by the string "GUID".
| extend Text=replace_regex(Text, @"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID")
// Now perform the reduce. In case there are other "quasi-random" identifiers with embedded '-'
// or '_' characters in them, treat these as non-term-breakers.
| reduce by Text with characters="-_"

autocluster

Catatan

Implementasi operator reduce sebagian besar didasarkan pada makalah A Data Clustering Algorithm for Mining Patterns From Event Logs, karya Risto Vaarandi.