As funções de período comparativo comparam resultados de consultas em diferentes janelas de tempo, permitindo análises ano a ano e período a período.
O Simple Log Service (SLS) oferece suporte às seguintes funções de período comparativo.
Para usar strings em instruções analíticas, é obrigatório colocá-las entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo, 'status' representa a string status, enquanto status ou "status" indica o campo de log status.
|
Nome da função |
Sintaxe |
Descrição |
Suporte SQL |
Suporte SPL |
|
compare(x, n) |
Compara o resultado calculado do período atual com o resultado de n segundos atrás. |
√ |
× |
|
|
compare(x, n1, n2, n3...) |
Compara o resultado calculado do período atual com os resultados de n1, n2, n3... segundos atrás. |
√ |
× |
|
|
ts_compare(x, n) |
Compara o resultado de um tempo alinhado, como por hora, no período atual com o resultado do tempo correspondente n segundos atrás. |
√ |
× |
|
|
ts_compare(x, n1, n2, n3...) |
Compara o resultado de um tempo alinhado, como por hora, no período atual com os resultados dos tempos correspondentes n1, n2, n3... segundos atrás. |
√ |
× |
A função
ts_compareexige uma cláusulaGROUP BYcom uma única coluna de tempo.Não é permitido aninhar as funções
compareets_compare.
Função compare
Compara o resultado calculado do período atual com resultados de um ou mais períodos anteriores.
Sintaxe
-
Use esta sintaxe para comparar o resultado calculado do período atual com o resultado de n segundos atrás.
compare(x, n) -
Utilize esta forma para comparar o resultado calculado do período atual com resultados de n1, n2, n3... segundos atrás.
compare(x, n1, n2, n3...)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Valor a ser comparado. Deve ser do tipo |
|
n |
Janela de tempo em segundos. Exemplos: |
Valor retornado
Retorna um array. Para um único deslocamento de tempo n, o formato é [current_result, previous_result, ratio]. Quando múltiplos deslocamentos de tempo (n1, n2, ...) são especificados, o formato é [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...].
Exemplos
-
Exemplo 1: Calcular a proporção de visualizações de página (PVs) entre a hora atual e a mesma hora do dia anterior.
Defina o intervalo de tempo para consulta e análise como 1 Hour (Aligned Time) e execute a seguinte instrução de consulta. Na instrução, 86400 representa o tempo atual menos 86400 segundos (1 dia), e log representa o nome do Logstore.
-
Exibir resultados como um array
-
Instrução de consulta (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log ) -
Resultados da consulta e análise
3337.0: Os PVs da hora atual (por exemplo, das 14:00:00 às 15:00:00 em 25 de dezembro de 2020).
3522.0: Os PVs da mesma hora no dia anterior (por exemplo, das 14:00:00 às 15:00:00 em 24 de dezembro de 2020).
0.947473026689381: A proporção de PVs entre a hora atual e a mesma hora do dia anterior.
-
-
Exibir resultados em colunas separadas
-
Instrução de consulta (Debug)
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) )A função
compareretorna um array, onde diff é um alias para o resultado, e diff [1] obtém o primeiro valor do array. -
Resultados da consulta e análise
3337.0: Os PVs da hora atual (por exemplo, das 14:00:00 às 15:00:00 em 25 de dezembro de 2020).
3522.0: Os PVs da mesma hora no dia anterior (por exemplo, das 14:00:00 às 15:00:00 em 24 de dezembro de 2020).
0.947473026689381: A proporção de PVs entre a hora atual e a mesma hora do dia anterior.
-
-
-
Exemplo 2: Para a hora atual, contar as solicitações para cada combinação de status e método de requisição, e comparar o resultado com a contagem da hora anterior.
Selecione 1 Hour (Aligned Time) como intervalo de tempo para consulta e análise, e execute a seguinte instrução. Na instrução, 3600 representa o tempo atual menos 3600 segundos (1 hora), e log representa o nome do Logstore.
-
Instrução de consulta (Debug)
* | SELECT status, request_method, compare(PV, 3600) FROM ( SELECT status, request_method, count(*) AS PV FROM log GROUP BY status, request_method ) GROUP BY status, request_method Resultados da consulta e análise: Os resultados incluem três colunas: status, request_method e _col2. A coluna _col2 contém o array retornado pela função
compareno formato[current_period_value, previous_period_value, ratio]. Por exemplo, uma linha com código de status 501 e método de requisição GET retorna[39.0, 13.0, 3.0]. Isso indica uma contagem de PV de 39 para o período atual, 13 para o período anterior e uma proporção período a período de 3.0.
-
Função ts_compare
Compara o resultado calculado de um tempo alinhado (por exemplo, por hora) no período atual com resultados dos tempos correspondentes em períodos anteriores.
A função ts_compare exige uma cláusula GROUP BY com uma única coluna de tempo.
Sintaxe
-
Use esta sintaxe para comparar o resultado calculado de um tempo alinhado no período atual com o resultado do tempo alinhado correspondente em um período n segundos atrás.
ts_compare(x, n) -
Utilize esta forma para comparar o resultado calculado de um tempo alinhado no período atual com resultados dos tempos correspondentes n1, n2, n3... segundos atrás.
ts_compare(x, n1, n2, n3...)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Valor a ser comparado. Deve ser do tipo |
|
n |
Janela de tempo em segundos. Exemplos: |
Valor retornado
Retorna um array. Para um único deslocamento de tempo n, o formato é [current_result, previous_result, ratio, previous_unix_timestamp]. Quando múltiplos deslocamentos de tempo (n1, n2, ...) são especificados, o formato é [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_unix_timestamp_1, previous_unix_timestamp_2, ...].
Exemplos
-
Exemplo 1: Comparar as visualizações de página (PVs) horárias de hoje com as da mesma hora do dia anterior e de dois dias atrás.
Defina o intervalo de tempo para consulta e análise como Today (Aligned Time) e execute a seguinte instrução de consulta. Nesta instrução, 86400 representa o tempo atual menos 86400 segundos (1 dia), 172800 representa o tempo atual menos 172800 segundos (2 dias), log representa o nome do Logstore, e date_trunc('hour',__time__ ) representa o uso da função date_trunc para alinhar o tempo à hora.
-
Exibir resultados como um array
-
Instrução de consulta (Debug)
* | SELECT time, ts_compare(PV, 86400, 172800) as diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time -
Resultados da consulta e análise
1174.0: Os PVs do período atual (por exemplo, das 00:00 às 01:00 em 22 de setembro de 2022).
1191.0: Os PVs do mesmo período no dia anterior (por exemplo, das 00:00 às 01:00 em 21 de setembro de 2022).
1253.0: Os PVs do mesmo período dois dias atrás (por exemplo, das 00:00 às 01:00 em 20 de setembro de 2022).
0.9857262804366079: A proporção de PVs entre a hora atual e a mesma hora do dia anterior.
0.936951316839585: A proporção de PVs entre a hora atual e a mesma hora de dois dias atrás.
1663689600.0: O timestamp UNIX para 00:00 em 21 de setembro de 2022.
1663603200.0: O timestamp UNIX para 00:00 em 20 de setembro de 2022.
NotaOs timestamps nos resultados podem variar dependendo de quando você executa a consulta.
-
-
Exibir resultados em colunas separadas
-
Instrução de consulta (Debug)
* | SELECT time, diff [1] AS day1, diff [2] AS day2, diff [3] AS day3, diff [4] AS ratio1, diff [5] AS ratio2 FROM ( SELECT time, ts_compare(PV, 86400, 172800) AS diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time ) Resultados da consulta e análise: Cada linha na tabela de resultados representa uma hora de dados. time é o timestamp horário. day1, day2 e day3 são as contagens de PV para o dia atual, o dia anterior e dois dias atrás, respectivamente. ratio1 é a proporção entre o dia atual e o dia anterior, e ratio2 é a proporção entre o dia atual e dois dias atrás. Um valor próximo de 1.0 indica pouca variação.
-
-
-
Exemplo 2: Calcular a variação hora a hora nas visualizações de página (PVs) de hoje.
Defina o intervalo de tempo para consulta e análise como Today (relative) e execute a seguinte instrução de consulta. Nesta instrução, 3600 representa o tempo atual menos 3600 segundos (1 hora), log é o nome do Logstore, e date_trunc('hour',__time__ ) usa a função
date_truncpara alinhar o tempo à hora.-
Instrução de consulta (Debug)
* | SELECT time, ts_compare(PV, 3600) AS data FROM( SELECT date_trunc('hour', __time__) AS time, count(*) AS PV FROM log GROUP BY time ORDER BY time ) GROUP BY time -
Os resultados da consulta e análise contêm duas colunas: time e data. Por exemplo, quando time é
2021-01-27 00:00:00.000, data é[1160.0,10034.0,0.11560693641618497,1611673200.0]. Quando time é2021-01-27 01:00:00.000, data é[10177.0,1160.0,8.773275862068966,1611676800.0]. Quando time é2021-01-27 02:00:00.000, data é[26804.0,10177.0,2.633782057580195,1611680400.0].NotaOs timestamps nos resultados podem variar dependendo de quando você executa a consulta.
-