Fungsi penambangan pola menganalisis sampel dengan beberapa atribut berdasarkan kondisi tertentu. Fungsi ini mengidentifikasi serangkaian pola yang memengaruhi cara data dipartisi dan membantu Anda mendiagnosis penyebab perbedaan secara cepat.
diff_patterns
Fungsi ini membandingkan dua set data dengan struktur yang sama untuk menemukan pola atribut diskrit (dimensi) yang berbeda di antara keduanya. Fungsi ini dirancang untuk membandingkan templat (itemset frekuensi) dalam data tabular.
Sintaksis
diff_patterns($TABLE, $HEADER, $SPLIT_COLUMN, $TEST_VAL, $CONTROL_VAL, $METRIC_COLUMN, $WEIGHT_COLUMN, $PARAM)Parameter
Pastikan bahwa $SPLIT_COLUMN berisi baris untuk $TEST_VAL dan $CONTROL_VAL saat menggunakan fungsi statistik perbedaan pola. Fungsi tidak dapat melakukan perbandingan jika data untuk kelompok uji atau kelompok kontrol hilang.
Parameter | Tipe data | Diperlukan | Deskripsi |
$TABLE | row<array<T>, array<E>, ..., array<F>> | Ya | Tabel input untuk fungsi diff_patterns. Setiap kolom adalah kolom dimensi untuk analisis drill-down. |
$HEADER | array<varchar> | Ya | Nama kolom. Nama-nama ini sesuai dengan kolom dalam $TABLE. Jumlah nama header harus sesuai dengan jumlah kolom tabel. |
$SPLIT_COLUMN | varchar | Ya | Nama kolom target yang digunakan untuk membedakan antar kelompok. Kategori tag saat ini hanya mendukung tipe string. |
$TEST_VAL | varchar | Ya | Nilai dalam $SPLIT_COLUMN yang sesuai dengan kelompok uji. Pastikan bahwa $TEST_VAL ada dalam $SPLIT_COLUMN. Jika tidak, kedua kelompok tidak dapat dibedakan. Biasanya, $TEST_VAL sesuai dengan nilai abnormal. |
$CONTROL_VAL | varchar | Ya | Nilai dalam $SPLIT_COLUMN yang sesuai dengan kelompok kontrol. Pastikan bahwa $CONTROL_VAL ada dalam $SPLIT_COLUMN. Jika tidak, kedua kelompok tidak dapat dibedakan. $CONTROL_VAL sesuai dengan nilai normal. |
$METRIC_COLUMN | double/int | Tidak | Kolom metrik. Nilai defaultnya adalah Jika Anda ingin menganalisis dampak kombinasi dimensi pada metrik tertentu selain kelompok data, tentukan kolom metrik. Sebagai contoh, jika kolom 'qps' mencatat metrik Anda, algoritma dapat menghitung perbedaan metrik ini untuk berbagai kombinasi dimensi. |
$WEIGHT_COLUMN | varchar | Tidak | Kolom bobot. Nilai defaultnya adalah '', yang berarti tidak ada kolom bobot yang ditentukan. Jika parameter ini tidak disetel, semua baris diasumsikan memiliki bobot yang sama. Jika kolom bobot disetel, semua perhitungan mempertimbangkan bobot. Sebagai contoh, baris dengan bobot 2 diperlakukan seolah-olah muncul dua kali dibandingkan baris dengan bobot 1. |
$PARAM | varchar | Tidak | Untuk informasi lebih lanjut, lihat detail parameter param. |
Detail parameter param
Nama parameter | Deskripsi | Tipe | Diperlukan | Default | Nilai valid |
minimum_support_fraction | Support minimum dari pola output dalam kelompok uji. Sebagai contoh, jika sebuah pola muncul dengan frekuensi 0,1 dalam kelompok uji, support-nya adalah 0,1. Parameter ini mengontrol jumlah pola output dengan menyesuaikan sensitivitas. | double | Tidak | 0,05 | (0, 1) |
allow_sample | Menentukan apakah sampling diizinkan untuk perhitungan. | bool | Tidak | true | [true, false] |
agg_op | Sebuah pola menyaring beberapa baris data. Fungsi kemudian menghitung nilai agregat dari baris-baris ini dalam METRIC_COLUMN. Parameter ini menentukan operasi agregasi yang akan digunakan. Jika METRIC_COLUMN tidak ditentukan, nilai defaultnya adalah 1 untuk kelompok uji dan 0 untuk kelompok kontrol. | string | Tidak | "avg" | ["sum", "avg", "max", "min", "count", "p95"] |
shapley_value_min_fraction | Fraction Shapley value minimum untuk suatu kondisi. Parameter ini mengontrol jumlah kondisi dalam sebuah pola. | double | Tidak | 0,1 | (0, 1) |
Contoh
Analisis query:
Bendera `set session enable_remote_functions=true` diperlukan karena fitur ini dalam pratinjau publik. Anda harus menambahkan bendera ini secara manual. Persyaratan ini akan dihapus di versi mendatang.
* | set session enable_remote_functions=true ; with t0 as (select JSON_EXTRACT_SCALAR(entity, '$.platform') AS platform, JSON_EXTRACT_SCALAR(entity, '$.region') AS region, cast(value as double) as value, if((value > 100), 'true', 'false') as anomaly_label from log), t1 as ( select array_agg(platform) as platform, array_agg(region) as region, array_agg(anomaly_label) as anomaly_label, array_agg(value) as value from t0), t2 as (select row(platform, region, anomaly_label, value) as table_row from t1), t3 as (select diff_patterns(table_row, ARRAY['platform', 'region', 'anomaly_label', 'value'],'anomaly_label', 'true', 'false', 'value') as ret from t2) select * from t3Output:
[["\"platform\"='Amazon Prime'","\"platform\"='Console'","\"platform\"='VR'","\"platform\"='Mobile'","\"platform\"='PC'","\"platform\"='Hulu'","\"platform\"='Netflix' AND \"region\"='Asia'","\"platform\"='YouTube'","\"platform\"='Disney+' AND \"region\"='South America'"],[18720,56921,44516,47520,44640,8640,4320,15840,4320],[0,4999,7324,5760,4320,0,0,1440,0],[0.05248902272841978,0.15960083668399478,0.12481844742405635,0.13324136538752713,0.1251661311216164,0.024225702797732206,0.012112851398866103,0.04441378846250904,0.012112851398866103],[0.0,0.0032988991351195829,0.004833194091941553,0.003801092022062172,0.0028508190165466289,0.0,0.0,0.000950273005515543,0.0],[0.05248902272841978,0.1563019375488752,0.1199852533321148,0.12944027336546497,0.12231531210506977,0.024225702797732206,0.012112851398866103,0.0434635154569935,0.012112851398866103],[608.6946996258738,552.6152340898742,501.3011076154948,525.0147121416072,580.8151715760738,409.282718625793,631.6115865793741,603.7699053925991,526.960199868643],[0.0,58.46518308219622,55.396758003518488,49.12926473747681,44.68946999270535,0.0,0.0,20.76262974302821,0.0],null]
Detail nilai kembali
Parameter | Tipe | Deskripsi | Contoh |
$RET.patterns | array<varchar> | Templat tabel, yaitu itemset frekuensi. |
|
$RET.test_supports | array<bigint> | Frekuensi templat yang sesuai dalam kelompok uji. |
|
$RET.control_supports | array<bigint> | Frekuensi templat yang sesuai dalam kelompok kontrol. Dengan perbandingan, hasil yang muncul lebih awal dalam output diff_patterns memiliki frekuensi jauh lebih tinggi dalam kelompok uji (kelompok abnormal) daripada dalam kelompok kontrol (kelompok normal). |
|
$RET.test_ratio | array<double> | Rasio templat yang sesuai dalam kelompok uji (label=1) terhadap total set data uji. |
|
$RET.control_ratio | array<double> | Rasio templat yang sesuai dalam kelompok kontrol (label=0) terhadap total set validasi. |
|
$RET.difference | array<double> | Perbedaan antara data kelompok uji dan data kelompok kontrol. |
|
$RET.test_average_metric | array<double> | Nilai rata-rata METRIC_COLUMN untuk data yang cocok dengan pola. Jika METRIC_COLUMN adalah '', nilai kembali ini tidak bermakna. |
|
$RET.control_average_metric | array<double> | Nilai rata-rata METRIC_COLUMN untuk data yang tidak cocok dengan pola. Jika METRIC_COLUMN adalah '', nilai kembali ini tidak bermakna. |
|
$RET.error_msg | varchar/null | Pesan kesalahan. Jika tidak ada kesalahan yang terjadi, nilai kembalinya adalah |
|