Compartir a través de


series_periods_detect()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Busca los períodos más significativos dentro de una serie temporal.

La función series_periods_detect() es útil para detectar patrones periódicos en datos, como ciclos diarios, semanales o mensuales.

Sintaxis

series_periods_detect( series,min_period ,max_period num_periods,)

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
serie dynamic ✔️ Matriz de valores numéricos, normalmente la salida resultante de los operadores make-series o make_list .
min_period real ✔️ Longitud mínima del período para el que se va a buscar.
max_period real ✔️ Longitud máxima del período para el que se va a buscar.
num_periods long ✔️ Número máximo de períodos que se van a devolver. Este número es la longitud de las matrices dinámicas de salida.

Importante

  • El algoritmo puede detectar períodos que contengan al menos 4 puntos y al menos la mitad de la longitud de la serie.
  • Establezca el min_period un poco abajo y max_period un poco por encima de los períodos que espera encontrar en la serie temporal. Por ejemplo, si tiene una señal agregada por hora y busca períodos diarios y semanales (24 y 168 horas respectivamente), puede establecer min_period=0,8*24, max_period=1,2*168 y dejar un 20 % de márgenes alrededor de estos períodos.
  • La serie temporal de entrada debe ser normal. Es decir, agregados en contenedores constantes, que siempre es el caso si se ha creado con series make. En caso contrario, el resultado no tendrá sentido.

Devoluciones

La función devuelve una tabla con dos columnas:

  • períodos: matriz dinámica que contiene los períodos encontrados, en unidades del tamaño de la bandeja, ordenados por sus puntuaciones.
  • scores: matriz dinámica que contiene valores entre 0 y 1. Cada matriz mide la importancia de un período en su posición respectiva en la matriz de períodos .

Ejemplo

La consulta siguiente inserta una instantánea del tráfico de la aplicación durante un mes. La cantidad de tráfico se agrega dos veces al día, lo que significa que el tamaño de la papelera es de 12 horas. La consulta genera un gráfico de líneas que muestra claramente un patrón en los datos.

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

Períodos de serie.

Puede ejecutar la función series_periods_detect() en la misma serie para identificar los patrones periódicos. La función busca patrones en el intervalo de período especificado y devuelve dos valores. El primer valor indica un patrón detectado que tiene un largo de 14 puntos con una puntuación de aproximadamente .84. El otro valor es cero que indica que no se encontró ningún patrón adicional.

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)

Salida

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

El valor de series_periods_detect_y_periods_scores se trunca.

Nota:

También hay un patrón diario visible en el gráfico, pero no lo devuelve la consulta porque el muestreo es demasiado grueso (tamaño de cubo de 12h). Un período diario de 2 cubos está por debajo del tamaño mínimo del período de 4 puntos, requerido por el algoritmo.