series_periods_detect()
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel-
Hiermee vindt u de belangrijkste perioden binnen een tijdreeks.
De functie series_periods_detect() is handig voor het detecteren van periodieke patronen in gegevens, zoals dagelijkse, wekelijkse of maandelijkse cycli.
Syntaxis
series_periods_detect(
reeks,
min_period,
max_period,
num_periods)
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
reeks | dynamic |
✔️ | Een matrix met numerieke waarden, meestal de resulterende uitvoer van de operatoren van de make-serie of make_list. |
min_period | real |
✔️ | De minimale periode die moet worden gezocht. |
max_period | real |
✔️ | De maximale lengte van de periode waarvoor moet worden gezocht. |
num_periods | long |
✔️ | Het maximum aantal perioden dat moet worden geretourneerd. Dit getal is de lengte van de dynamische uitvoermatrices. |
Belangrijk
- Het algoritme kan perioden met ten minste 4 punten en maximaal de helft van de reekslengte detecteren.
- Stel de min_period iets lager in en max_period iets hoger dan de perioden die u in de tijdreeks verwacht te vinden. Als u bijvoorbeeld een per uur geaggregeerd signaal hebt en u zoekt naar zowel dagelijkse als wekelijkse perioden (respectievelijk 24 en 168 uur), kunt u min_period=0,8*24, max_period=1,2*168 instellen en 20% marges rond deze perioden achterlaten.
- De invoertijdreeks moet regelmatig zijn. Dat wil gezegd, geaggregeerd in constante bins, wat altijd het geval is als deze is gemaakt met behulp van make-series. Anders is de uitvoer betekenisloos.
Retourneert
De functie retourneert een tabel met twee kolommen:
- perioden: een dynamische matrix met de gevonden perioden, in eenheden van de bin-grootte, gesorteerd op hun scores.
- scores: een dynamische matrix met waarden tussen 0 en 1. Elke matrix meet de betekenis van een periode in de respectieve positie in de perioden matrix.
Voorbeeld
Met de volgende query wordt een momentopname van toepassingsverkeer voor één maand ingesloten. De hoeveelheid verkeer wordt twee keer per dag geaggregeerd, wat betekent dat de bin-grootte 12 uur is. De query produceert een lijndiagram dat duidelijk een patroon in de gegevens weergeeft.
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
U kunt de functie series_periods_detect()
uitvoeren op dezelfde reeks om de terugkerende patronen te identificeren. De functie zoekt naar patronen in het opgegeven periodebereik en retourneert twee waarden. De eerste waarde geeft een gedetecteerd patroon aan dat 14 punten lang is met een score van ongeveer .84. De andere waarde is nul die aangeeft dat er geen extra patroon is gevonden.
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)
uitvoer
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14, 0] | [0.84, 0] |
De waarde in series_periods_detect_y_periods_scores wordt afgekapt.
Notitie
Er is ook een dagelijks patroon zichtbaar in de grafiek, maar dit wordt niet geretourneerd door de query omdat de steekproef te grof is (grootte van 12 uur). Een dagelijkse periode van 2 bins is lager dan de minimale periodegrootte van 4 punten, vereist door het algoritme.