Condividi tramite


series_periods_detect()

Si applica a: ✅Microsoft Fabric

Trova i periodi più significativi all'interno di una serie temporale.

La funzione series_periods_detect() è utile per rilevare modelli periodici nei dati, ad esempio cicli giornalieri, settimanali o mensili.

Sintassi

series_periods_detect( serie, min_period max_period num_periods ,,)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
serie dynamic ✔️ Matrice di valori numerici, in genere l'output risultante degli operatori make-series o make_list .
min_period real ✔️ Lunghezza minima del periodo per cui eseguire la ricerca.
max_period real ✔️ Lunghezza massima del periodo per cui eseguire la ricerca.
num_periods long ✔️ Numero massimo di periodi da restituire. Questo numero è la lunghezza delle matrici dinamiche di output.

Importante

  • L'algoritmo può rilevare periodi contenenti almeno 4 punti e al massimo la metà della lunghezza della serie.
  • Impostare il min_period un po ' sotto e max_period un po 'sopra i periodi che si prevede di trovare nella serie temporale. Ad esempio, se si dispone di un segnale aggregato orario e si cercano periodi giornalieri e settimanali (rispettivamente 24 e 168 ore), è possibile impostare min_period=0,8*24, max_period=1,2*168 e lasciare il 20% dei margini intorno a questi periodi.
  • La serie temporale di input deve essere regolare. Ovvero, aggregato in contenitori costanti, che è sempre il caso se è stato creato usando make-series. In caso contrario, l'output è privo di significato.

Valori restituiti

La funzione restituisce una tabella con due colonne:

  • periodi: matrice dinamica contenente i periodi trovati, in unità di dimensione del contenitore, ordinati in base ai punteggi.
  • punteggi: matrice dinamica contenente valori compresi tra 0 e 1. Ogni matrice misura il significato di un punto nella rispettiva posizione nella matrice di periodi.

Esempio

La query seguente incorpora uno snapshot del traffico dell'applicazione per un mese. La quantità di traffico viene aggregata due volte al giorno, ovvero la dimensione del contenitore è di 12 ore. La query produce un grafico a linee che mostra chiaramente un criterio nei dati.

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

Periodi di serie.

È possibile eseguire la funzione series_periods_detect() nella stessa serie per identificare i modelli ricorrenti. La funzione cerca i criteri nell'intervallo di periodi specificato e restituisce due valori. Il primo valore indica un modello rilevato lungo 14 punti con un punteggio di circa 84. L'altro valore è zero che indica che non è stato trovato alcun modello aggiuntivo.

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)

Output

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

Il valore in series_periods_detect_y_periods_scores viene troncato.

Nota

Esiste anche un modello giornaliero visibile nel grafico, ma non viene restituito dalla query perché il campionamento è troppo grossolano (dimensioni bin di 12h). Un periodo giornaliero di 2 bin è inferiore alla dimensione minima del periodo di 4 punti, richiesto dall'algoritmo.