Você pode usar a função de janelas deslizantes para criar gráficos usando a cláusula SLIDE BY
em conjunto com a cláusula TIMESERIES
, que permite coletar dados em "janelas" de tempo que se sobrepõem.
Dica
Você também pode usar janelas deslizantes através da interface na condição configurações avançadas de sinal.
Por exemplo, na imagem abaixo, uma consulta reúne dados com janelas de 5 minutos. As janelas "deslizam" 1 minuto. Cada janela se sobrepõe à janela anterior em 4 minutos.
Janelas de 5 minutos com “slide” de 1 minuto
Em contraste com as janelas deslizantes, as janelas "inclinadas" ou "em cascata" não se sobrepõem. Por exemplo, nesta consulta NRQL TIMESERIES 3 minutes
, as janelas têm 3 minutos de duração, com cada uma começando quando a outra termina sem sobreposição no intervalo de medição.
Janelas de 3 minutos sem sobreposição ou “deslizamento”.
Quando usar janelas deslizantes
As janelas deslizantes são úteis quando você precisa suavizar gráficos "ponjosos". Você pode usar janelas deslizantes para suavizar gráficos de linha que apresentam muita variação em curtos períodos de tempo. Isto é mais útil nos casos em que o agregado rolante (por exemplo, um meio rolante) é mais importante do que agregados provenientes de janelas de tempo estreitas.
No exemplo abaixo, os dados variam muito de um minuto para outro, portanto, o gráfico da janela oscilante de 1 minuto mostra muitos picos altos e vales baixos.
Consulta TIMESERIES sem cláusula SLIDE BY
Entretanto, neste exemplo, janelas TIMESERIES
de 5 minutos de largura são suavizadas com a ajuda de intervalos SLIDE BY
de 1 minuto. A consulta retorna dados semelhantes, mas cria um gráfico muito mais suave.
Consulta TIMESERIES com cláusula SLIDE BY
SLIDE BY
syntax
A sintaxe NRQL válida para a cláusula SLIDE BY
segue o formato abaixo.
SELECT ... TIMESERIES integer1 units SLIDE BY integer2 units
integer1
especifica a largura da janela deslizante e integer2
especifica o intervalo SLIDE BY
. units
é uma unidade de tempo, como second
, minute
, hour
ou day
. Todas as unidades de tempo NRQL padrão são aceitas.
Aqui está um exemplo real que mostra janelas TIMESERIES
de 5 minutos com um intervalo SLIDE BY
1 minuto.
SELECT average(duration) from Transaction TIMESERIES 5 minutes SLIDE BY 1 minute
Dica
Quando emparelhado com SLIDE BY
, TIMESERIES
não suporta AUTO
ou MAX
. O valor TIMESERIES
deve ser um valor de unidade de tempo inteiro. Em outras palavras, SLIDE BY AUTO
ou SLIDE BY MAX
funcionarão, mas TIMESERIES AUTO
ou TIMESERIES MAX
seguido por SLIDE BY
e MAX
, AUTO
ou uma unidade de tempo inteira específica não é suportada.
Tradução da consulta estilo PromQL
Quando aplicável, uma consulta no estilo PromQL é traduzida em uma consulta de janela deslizante NRQL. Por exemplo, se sua consulta de estilo PromQL usar rate(request_count[5m])
nos últimos 60 minutos com uma sobreposição de janela de 1 minuto, veja como essa consulta seria traduzida em NRQL.
SELECT rate(sum(request_count), 1 SECONDS) FROM Metric SINCE 3600 SECONDS AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 300000 SLIDE BY 60000
Na saída da tradução, a unidade padrão de milissegundos é usada para cláusulas TIMESERIES
e SLIDE BY
. Para TIMESERIES
, 300.000 ms equivalem a 300 segundos ou 5 minutos, especificando um tamanho de janela de 5 minutos. Para SLIDE BY
, 60.000 ms equivalem a 60 segundos, especificando um intervalo de deslizamento de 1 minuto.
Use SLIDE BY
com MAX
e AUTO
Você pode combinar SLIDE BY
com argumentos MAX
e AUTO
para personalizar ainda mais os resultados da consulta, conforme mostrado nos exemplos abaixo.
SELECT average(duration) FROM Transaction TIMESERIES 5 minutes SLIDE BY MAX
SELECT average(duration) FROM Transaction TIMESERIES 5 minutes SLIDE BY AUTO
Dica
O valor SLIDE BY
determinado por AUTO
ou MAX
pode produzir um intervalo de etapas maior que o tamanho da janela, que aparecerá como lacunas e resultados inesperados. Se você tiver esses problemas com os resultados da consulta, considere verificar a instância de SLIDE BY
em que o intervalo da etapa excede o tamanho da janela.