Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Fungsi plotly_anomaly_fl()
ini adalah fungsi yang ditentukan pengguna (UDF) yang memungkinkan Anda menyesuaikan templat plotly untuk membuat bagan anomali interaktif.
Fungsi ini menerima tabel yang berisi sumber dan rangkaian waktu garis besar, daftar anomali positif dan negatif dengan ukuran masing-masing, dan string pelabelan bagan. Fungsi mengembalikan tabel sel tunggal yang berisi JSON plotly. Secara opsional, Anda dapat merender data dalam petak dasbor Azure Data Explorer. Untuk informasi selengkapnya, lihat Plotly (pratinjau).
Fungsi ini menerima tabel yang berisi sumber dan rangkaian waktu garis besar, daftar anomali positif dan negatif dengan ukuran masing-masing, dan string pelabelan bagan. Fungsi mengembalikan tabel sel tunggal yang berisi JSON plotly. Secara opsional, Anda dapat merender data dalam petak peta dasbor Real-Time. Untuk informasi selengkapnya, lihat Plotly (pratinjau).
Catatan
Pertimbangkan untuk menggunakan metode asli " | render anomalychart"
Azure Data Explorer untuk merender bagan anomali non-interaktif.
Prasyarat
Ekstrak templat 'anomali' yang diperlukan dari tabel yang tersedia PlotlyTemplate
untuk umum. Salin tabel ini dari database Sampel ke database Anda dengan menjalankan perintah KQL berikut dari database target Anda:
.set PlotlyTemplate <| cluster('help.kusto.windows.net').database('Samples').PlotlyTemplate
Sintaks
T | invoke plotly_anomaly_fl(
,
time_col val_col ,
,
,
baseline_col baseline_col val_high_col,
,
,
,
,
,
,
time_high_col size_high_col time_low_col val_low__col size_low_col chart_title series_name val_name)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
time_col | string |
✔️ | Nama kolom yang berisi array dinamis titik waktu dari rangkaian waktu asli |
val_col | string |
✔️ | Nama kolom yang berisi nilai rangkaian waktu asli |
baseline_col | string |
✔️ | Nama kolom yang berisi nilai rangkaian waktu garis besar. Anomali biasanya terdeteksi oleh offset nilai besar dari nilai garis besar yang diharapkan. |
time_high_col | string |
✔️ | Nama kolom yang berisi titik waktu anomali tinggi (di atas garis besar) |
val_high_col | string |
✔️ | Nama kolom yang berisi nilai anomali tinggi |
size_high_col | string |
✔️ | Nama kolom yang berisi ukuran penanda anomali tinggi |
time_low_col | string |
✔️ | Nama kolom yang berisi titik waktu anomali rendah |
val_low_col | string |
✔️ | Nama kolom yang berisi nilai anomali rendah |
size_low_col | string |
✔️ | Nama kolom yang berisi ukuran penanda anomali rendah |
chart_title | string |
Judul bagan, defaultnya adalah 'Bagan Anomali' | |
series_name | string |
Nama rangkaian waktu, defaultnya adalah 'Metrik' | |
val_name | string |
Nama sumbu nilai, defaultnya adalah 'Nilai' |
Definisi fungsi
Anda dapat menentukan fungsi dengan menyematkan kodenya sebagai fungsi yang ditentukan kueri, atau membuatnya sebagai fungsi tersimpan dalam database Anda, sebagai berikut:
Tentukan fungsi menggunakan pernyataan let berikut. Tidak ada izin yang diperlukan.
Penting
Pernyataan let tidak dapat berjalan sendiri. Ini harus diikuti oleh pernyataan ekspresi tabular. Untuk menjalankan contoh plotly_anomaly_fl()
kerja , lihat Contoh.
let plotly_anomaly_fl=(tbl:(*), time_col:string, val_col:string, baseline_col:string, time_high_col:string , val_high_col:string, size_high_col:string,
time_low_col:string, val_low_col:string, size_low_col:string,
chart_title:string='Anomaly chart', series_name:string='Metric', val_name:string='Value')
{
let anomaly_chart = toscalar(PlotlyTemplate | where name == "anomaly" | project plotly);
let tbl_ex = tbl | extend _timestamp = column_ifexists(time_col, datetime(null)), _values = column_ifexists(val_col, 0.0), _baseline = column_ifexists(baseline_col, 0.0),
_high_timestamp = column_ifexists(time_high_col, datetime(null)), _high_values = column_ifexists(val_high_col, 0.0), _high_size = column_ifexists(size_high_col, 1),
_low_timestamp = column_ifexists(time_low_col, datetime(null)), _low_values = column_ifexists(val_low_col, 0.0), _low_size = column_ifexists(size_low_col, 1);
tbl_ex
| extend plotly = anomaly_chart
| extend plotly=replace_string(plotly, '$TIME_STAMPS$', tostring(_timestamp))
| extend plotly=replace_string(plotly, '$SERIES_VALS$', tostring(_values))
| extend plotly=replace_string(plotly, '$BASELINE_VALS$', tostring(_baseline))
| extend plotly=replace_string(plotly, '$TIME_STAMPS_HIGH_ANOMALIES$', tostring(_high_timestamp))
| extend plotly=replace_string(plotly, '$HIGH_ANOMALIES_VALS$', tostring(_high_values))
| extend plotly=replace_string(plotly, '$HIGH_ANOMALIES_MARKER_SIZE$', tostring(_high_size))
| extend plotly=replace_string(plotly, '$TIME_STAMPS_LOW_ANOMALIES$', tostring(_low_timestamp))
| extend plotly=replace_string(plotly, '$LOW_ANOMALIES_VALS$', tostring(_low_values))
| extend plotly=replace_string(plotly, '$LOW_ANOMALIES_MARKER_SIZE$', tostring(_low_size))
| extend plotly=replace_string(plotly, '$TITLE$', chart_title)
| extend plotly=replace_string(plotly, '$SERIES_NAME$', series_name)
| extend plotly=replace_string(plotly, '$Y_NAME$', val_name)
| project plotly
};
// Write your query to use the function here.
Contoh
Contoh berikut menggunakan operator pemanggilan untuk menjalankan fungsi.
Untuk menggunakan fungsi yang ditentukan kueri, panggil setelah definisi fungsi yang disematkan.
let plotly_anomaly_fl=(tbl:(*), time_col:string, val_col:string, baseline_col:string, time_high_col:string , val_high_col:string, size_high_col:string,
time_low_col:string, val_low_col:string, size_low_col:string,
chart_title:string='Anomaly chart', series_name:string='Metric', val_name:string='Value')
{
let anomaly_chart = toscalar(PlotlyTemplate | where name == "anomaly" | project plotly);
let tbl_ex = tbl | extend _timestamp = column_ifexists(time_col, datetime(null)), _values = column_ifexists(val_col, 0.0), _baseline = column_ifexists(baseline_col, 0.0),
_high_timestamp = column_ifexists(time_high_col, datetime(null)), _high_values = column_ifexists(val_high_col, 0.0), _high_size = column_ifexists(size_high_col, 1),
_low_timestamp = column_ifexists(time_low_col, datetime(null)), _low_values = column_ifexists(val_low_col, 0.0), _low_size = column_ifexists(size_low_col, 1);
tbl_ex
| extend plotly = anomaly_chart
| extend plotly=replace_string(plotly, '$TIME_STAMPS$', tostring(_timestamp))
| extend plotly=replace_string(plotly, '$SERIES_VALS$', tostring(_values))
| extend plotly=replace_string(plotly, '$BASELINE_VALS$', tostring(_baseline))
| extend plotly=replace_string(plotly, '$TIME_STAMPS_HIGH_ANOMALIES$', tostring(_high_timestamp))
| extend plotly=replace_string(plotly, '$HIGH_ANOMALIES_VALS$', tostring(_high_values))
| extend plotly=replace_string(plotly, '$HIGH_ANOMALIES_MARKER_SIZE$', tostring(_high_size))
| extend plotly=replace_string(plotly, '$TIME_STAMPS_LOW_ANOMALIES$', tostring(_low_timestamp))
| extend plotly=replace_string(plotly, '$LOW_ANOMALIES_VALS$', tostring(_low_values))
| extend plotly=replace_string(plotly, '$LOW_ANOMALIES_MARKER_SIZE$', tostring(_low_size))
| extend plotly=replace_string(plotly, '$TITLE$', chart_title)
| extend plotly=replace_string(plotly, '$SERIES_NAME$', series_name)
| extend plotly=replace_string(plotly, '$Y_NAME$', val_name)
| project plotly
};
let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let marker_scale = 8;
let s_name = 'TS1';
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t step dt by sid
| where sid == s_name
| extend (anomalies, score, baseline) = series_decompose_anomalies(num, 1.5, -1, 'linefit')
| mv-apply num1=num to typeof(double), anomalies1=anomalies to typeof(double), score1=score to typeof(double), TimeStamp1=TimeStamp to typeof(datetime) on (
summarize pAnomalies=make_list_if(num1, anomalies1 > 0), pTimeStamp=make_list_if(TimeStamp1, anomalies1 > 0), pSize=make_list_if(toint(score1*marker_scale), anomalies1 > 0),
nAnomalies=make_list_if(num1, anomalies1 < 0), nTimeStamp=make_list_if(TimeStamp1, anomalies1 < 0), nSize=make_list_if(toint(-score1*marker_scale), anomalies1 < 0)
)
| invoke plotly_anomaly_fl('TimeStamp', 'num', 'baseline', 'pTimeStamp', 'pAnomalies', 'pSize', 'nTimeStamp', 'nAnomalies', 'nSize',
chart_title='Anomaly chart using plotly_anomaly_fl()', series_name=s_name, val_name='# of requests')
| render plotly
Hasil
Outputnya adalah string JSON Plotly yang dapat dirender menggunakan '| render plotly' atau dalam petak dasbor Azure Data Explorer. Untuk informasi selengkapnya tentang membuat petak dasbor, lihat Memvisualisasikan data dengan dasbor Azure Data Explorer .
Output adalah string JSON Plotly yang dapat dirender dalam petak dasbor Real-Time. Untuk informasi selengkapnya tentang membuat petak dasbor, lihat Dasbor Real Time.
Gambar berikut menunjukkan sampel bagan anomali menggunakan fungsi di atas:
Anda dapat memperbesar dan mengarahkan mouse ke atas anomali: