series_periods_detect()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
尋找存在於時間序列中最重要的期間。
語法
series_periods_detect(
列,
min_period max_period num_periods ,
,
)
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
系列 | dynamic |
✔️ | 數值陣列,通常是make-series或 make_list運算子所產生的輸出。 |
min_period | real |
✔️ | 要搜尋的最小期間。 |
max_period | real |
✔️ | 要搜尋的最大期間。 |
num_periods | long |
✔️ | 所需期間數目上限。 這個數位將是輸出動態數位的長度。 |
重要
- 演算法可以偵測包含至少 4 點和最多一半數列長度的期間。
- 設定下方的min_period一點,並max_period您預期在時間序列中找到的期間。 例如,如果您有每小時匯總的訊號,而且您同時尋找每日和每周期間(分別為 24 和 168 小時),您可以設定 min_period=0.8*24,max_period=1.2*168,並保留 20% 的邊界。
- 輸入時間序列必須是一般。 也就是說,在常數量化中匯總,如果是使用 make-series建立,則一律會發生這種情況。 否則,輸出是毫無意義的。
傳回
函式會輸出具有兩個資料列的數據表:
- periods:動態陣列,包含依其分數排序的間隔大小單位找到的期間。
- scores:動態陣列,包含介於 0 到 1 之間的值。 每個陣列都會測量句點在句點陣列中其各自位置的意義。
範例
下列查詢會內嵌應用程式流量一個月的快照集,每天匯總兩次。 間隔大小為12小時。
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| render linechart
在此系列上執行 series_periods_detect()
,導致每周期間,長 14 點。
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| project series_periods_detect(y, 0.0, 50.0, 2)
輸出
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14.0, 0.0] | [0.84, 0.0] |
注意
找不到圖表中也可以看到的每日期間,因為取樣太粗(12 小時間隔大小),所以每天 2 個間隔的期間低於演算法所需的最小期間大小 4 點。