Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de período comparativo

Última atualização: Jul 17, 2026

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.

Importante

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

função compare

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.

×

função ts_compare

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.

×

Importante
  • A função ts_compare exige uma cláusula GROUP BY com uma única coluna de tempo.

  • Não é permitido aninhar as funções compare e ts_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 double ou long.

n

Janela de tempo em segundos. Exemplos: 3600 (1 hora), 86400 (1 dia), 604800 (1 semana) ou 31622400 (1 ano).

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 compare retorna 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 compare no 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.

Importante

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 double ou long.

n

Janela de tempo em segundos. Exemplos: 3600 (1 hora), 86400 (1 dia), 604800 (1 semana) ou 31622400 (1 ano).

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.

        Nota

        Os 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_trunc para 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].

      Nota

      Os timestamps nos resultados podem variar dependendo de quando você executa a consulta.