Compartilhar via


series_periods_detect()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Localiza os períodos mais significativos em uma série temporal.

A função series_periods_detect() é útil para detectar padrões periódicos em dados, como ciclos diários, semanais ou mensais.

Sintaxe

series_periods_detect( Série,min_period ,max_period num_periods,)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
série dynamic ✔️ Uma matriz de valores numéricos, normalmente a saída resultante dos operadores make-series ou make_list .
min_period real ✔️ O comprimento mínimo do período para o qual pesquisar.
max_period real ✔️ O comprimento máximo do período para o qual pesquisar.
num_periods long ✔️ O número máximo de períodos a serem retornados. Esse número é o comprimento das matrizes dinâmicas de saída.

Importante

  • O algoritmo pode detectar períodos contendo pelo menos 4 pontos e no máximo metade do comprimento da série.
  • Defina o min_period um pouco abaixo e max_period um pouco acima dos períodos que você espera encontrar na série temporal. Por exemplo, se você tiver um sinal agregado por hora e procurar períodos diários e semanais (24 e 168 horas, respectivamente), poderá definir min_period = 0,8 * 24, max_period = 1,2 * 168 e deixar margens de 20% em torno desses períodos.
  • A série temporal de entrada deve ser regular. Ou seja, agregado em compartimentos constantes, o que é sempre o caso se tiver sido criado usando make-series. Caso contrário, a saída é insignificante.

Devoluções

A função retorna uma tabela com duas colunas:

  • períodos: uma matriz dinâmica que contém os períodos encontrados, em unidades do tamanho da lixeira, ordenadas por suas pontuações.
  • scores: uma matriz dinâmica contendo valores entre 0 e 1. Cada matriz mede a significância de um período em sua respectiva posição na matriz de períodos .

Exemplo

A consulta a seguir inscreve um instantâneo do tráfego do aplicativo por um mês. A quantidade de tráfego é agregada duas vezes por dia, o que significa que o tamanho da lixeira é de 12 horas. A consulta produz um gráfico de linhas mostrando claramente um padrão nos dados.

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 série.

Você pode executar a função series_periods_detect() na mesma série para identificar os padrões recorrentes. A função pesquisa padrões no intervalo de período especificado e retorna dois valores. O primeiro valor indica um padrão detectado de 14 pontos de comprimento com uma pontuação de aproximadamente 0,84. O outro valor é zero que indica que nenhum padrão adicional foi encontrado.

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)

Saída

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

O valor em series_periods_detect_y_periods_scores é truncado.

Observação

Também há um padrão diário visível no gráfico, mas isso não é retornado pela consulta porque a amostragem é muito grosseira (tamanho da lixeira de 12h). Um período diário de 2 compartimentos está abaixo do tamanho mínimo do período de 4 pontos, exigido pelo algoritmo.