Sdílet prostřednictvím


series_periods_detect()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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

Řady období.

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.