Udostępnij za pośrednictwem


series_periods_detect()

Dotyczy: ✅Microsoft Fabric

Znajduje najbardziej znaczące okresy w szeregach czasowych.

Funkcja series_periods_detect() jest przydatna do wykrywania okresowych wzorców w danych, takich jak cykle dzienne, tygodniowe lub miesięczne.

Składnia

series_periods_detect( num_periods max_period serii min_period,,)

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
seria dynamic ✔️ Tablica wartości liczbowych, zazwyczaj wynikowe dane wyjściowe operatorów make-series lub make_list .
min_period real ✔️ Minimalna długość okresu do wyszukania.
max_period real ✔️ Maksymalna długość okresu, dla którego należy wyszukiwać.
num_periods long ✔️ Maksymalna liczba okresów do zwrócenia. Ta liczba jest długością wyjściowych tablic dynamicznych.

Ważne

  • Algorytm może wykrywać okresy zawierające co najmniej 4 punkty i co najwyżej połowę długości serii.
  • Ustaw min_period nieco poniżej i max_period nieco powyżej okresów, które można znaleźć w szeregach czasowych. Jeśli na przykład masz zagregowany sygnał godzinowy i szukasz odpowiednio okresów dziennych i tygodniowych (odpowiednio 24 i 168 godzin), możesz ustawić min_period=0,8*24, max_period=1,2*168 i pozostawić 20% marginesów wokół tych okresów.
  • Szereg czasowy wejściowy musi być regularny. Oznacza to, że agregowane w pojemnikach stałych, czyli zawsze w przypadku utworzenia przy użyciu serii make-series. W przeciwnym razie dane wyjściowe są bez znaczenia.

Zwraca

Funkcja zwraca tabelę z dwiema kolumnami:

  • okresy: tablica dynamiczna zawierająca okresy znalezione w jednostkach rozmiaru pojemnika uporządkowane według ich wyników.
  • scores: tablica dynamiczna zawierająca wartości z zakresu od 0 do 1. Każda tablica mierzy znaczenie okresu w odpowiedniej pozycji w tablicy okresów .

Przykład

Poniższe zapytanie osadza migawkę ruchu aplikacji przez jeden miesiąc. Ilość ruchu jest agregowana dwa razy dziennie, co oznacza, że rozmiar pojemnika wynosi 12 godzin. Zapytanie tworzy wykres liniowy wyraźnie pokazujący wzorzec w danych.

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

Okresy serii.

Możesz uruchomić funkcję series_periods_detect() w tej samej serii, aby zidentyfikować wzorce cykliczne. Funkcja wyszukuje wzorce w określonym zakresie okresów i zwraca dwie wartości. Pierwsza wartość wskazuje wykryty wzorzec o długości 14 punktów z wynikiem około .84. Druga wartość to zero, która wskazuje, że nie znaleziono żadnego dodatkowego wzorca.

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)

Wyjście

series_periods_detect_y_periods series_periods_detect_y_periods_scores
[14, 0] [0.84, 0]

Wartość w series_periods_detect_y_periods_scores jest obcięta.

Uwaga

Na wykresie widoczny jest również dzienny wzorzec, ale nie jest zwracany przez zapytanie, ponieważ próbkowanie jest zbyt grube (rozmiar pojemnika 12 godzin). Dzienny okres 2 pojemników jest niższy od minimalnego rozmiaru 4 punktów, wymaganego przez algorytm.