series_periods_detect()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Najde nejvýznamnější období v rámci časové řady.
Funkce series_periods_detect() je užitečná pro zjišťování pravidelných vzorů v datech, jako jsou denní, týdenní nebo měsíční cykly.
Syntaxe
series_periods_detect(
num_periods řady,
min_period max_period,
)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
řada | dynamic |
✔️ | Matice číselných hodnot, obvykle výsledný výstup operátorů make-series nebo make_list . |
min_period | real |
✔️ | Minimální délka období, pro kterou se má hledat. |
max_period | real |
✔️ | Maximální délka období, pro kterou se má hledat. |
num_periods | long |
✔️ | Maximální počet období, která se mají vrátit. Toto číslo je délka výstupních dynamických polí. |
Důležité
- Algoritmus dokáže detekovat tečky obsahující alespoň 4 body a maximálně polovinu délky řady.
- Nastavte min_period o něco níže a max_period trochu nad obdobími, která očekáváte, že najdete v časové řadě. Pokud máte například hodinový agregovaný signál a hledáte denní i týdenní období (24 a 168 hodin), můžete nastavit min_period=0,8*24, max_period=1,2*168 a nechat kolem těchto období 20% okrajů.
- Vstupní časová řada musí být běžná. To znamená agregace v konstantních intervalech, což je vždy případ, kdy byla vytvořena pomocí řady make-series. V opačném případě je výstup bezvýznamný.
Návraty
Funkce vrátí tabulku se dvěma sloupci:
- období: Dynamické pole obsahující nalezená období v jednotkách velikosti přihrádky seřazené podle skóre.
- skóre: Dynamické pole obsahující hodnoty mezi 0 a 1. Každé pole měří význam období v příslušné pozici v matici období.
Příklad
Následující dotaz vloží snímek provozu aplikace za jeden měsíc. Objem provozu se agreguje dvakrát denně, což znamená, že velikost intervalu je 12 hodin. Dotaz vytvoří spojnicový graf jasně znázorňující vzor v datech.
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
Funkci series_periods_detect()
můžete spustit ve stejné řadě a identifikovat tak opakující se vzory. Funkce vyhledá vzory v zadaném rozsahu období a vrátí dvě hodnoty. První hodnota označuje zjištěný vzor, který je dlouhý 14 bodů s skóre přibližně 0,84. Druhá hodnota je nula, která značí, že nebyl nalezen žádný další vzor.
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)
Výstup
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14, 0] | [0.84, 0] |
Hodnota v series_periods_detect_y_periods_scores je zkrácena.
Poznámka:
V grafu je také viditelný denní vzor, ale dotaz ho nevrací, protože vzorkování je příliš hrubé (velikost intervalu 12h). Denní interval 2 intervaly je nižší než minimální velikost 4 bodů, kterou algoritmus vyžaduje.
Související obsah
- regulárních výrazů
-
series_periods_validate()