All Products
Search
Document Center

Simple Log Service:Fungsi periode komparatif

Last Updated:Jun 22, 2026

Topik ini menjelaskan sintaks dasar fungsi periode komparatif dan memberikan contoh penggunaannya.

Simple Log Service (SLS) mendukung fungsi periode komparatif berikut.

Penting

Jika Anda ingin menggunakan string dalam pernyataan analitik, Anda harus membungkus string tersebut dengan tanda petik tunggal (''). String yang tidak dibungkus atau string yang dibungkus dengan tanda petik ganda ("") menunjukkan nama field atau nama kolom. Misalnya, 'status' menunjukkan string status, sedangkan status atau "status" menunjukkan field log status.

Nama Fungsi

Sintaks

Deskripsi

Dukungan SQL

Dukungan SPL

compare function

compare(x, n)

Membandingkan hasil perhitungan untuk periode waktu saat ini dengan hasil dari n detik sebelumnya.

×

compare(x, n1, n2, n3...)

Membandingkan hasil perhitungan untuk periode waktu saat ini dengan hasil dari n1, n2, n3... detik sebelumnya.

×

ts_compare function

ts_compare(x, n)

Membandingkan hasil untuk waktu yang selaras (misalnya per jam) pada periode saat ini dengan hasil dari waktu yang sesuai n detik sebelumnya.

×

ts_compare(x, n1, n2, n3...)

Membandingkan hasil untuk waktu yang selaras (misalnya per jam) pada periode saat ini dengan hasil dari waktu yang sesuai n1, n2, n3... detik sebelumnya.

×

Penting
  • Fungsi ts_compare memerlukan klausa GROUP BY dengan satu kolom waktu.

  • Fungsi compare dan ts_compare tidak dapat disarangkan.

Compare function

Fungsi compare membandingkan hasil perhitungan untuk periode waktu saat ini dengan hasil dari satu atau beberapa periode sebelumnya.

Sintaks

  • Membandingkan hasil perhitungan untuk periode waktu saat ini dengan hasil dari n detik sebelumnya.

    compare(x, n)
  • Membandingkan hasil perhitungan untuk periode waktu saat ini dengan hasil dari n1, n2, n3... detik sebelumnya.

    compare(x, n1, n2, n3...)

Parameter

Parameter

Deskripsi

x

Nilai yang akan dibandingkan. Nilai harus bertipe double atau long.

n

Jendela waktu dalam satuan detik. Contoh: 3600 (1 jam), 86400 (1 hari), 604800 (1 minggu), atau 31622400 (1 tahun).

Nilai kembalian

Mengembalikan sebuah array. Untuk offset waktu tunggal n, formatnya adalah [current_result, previous_result, ratio]. Ketika beberapa offset waktu (n1, n2, ...) ditentukan, formatnya adalah [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...].

Contoh

  • Contoh 1: Hitung rasio jumlah tampilan halaman (PVs) antara jam saat ini dan jam yang sama pada hari sebelumnya.

    Tetapkan rentang waktu untuk kueri dan analisis ke 1 Hour (Aligned Time) dan jalankan pernyataan kueri berikut. Dalam pernyataan tersebut, 86400 merepresentasikan waktu saat ini dikurangi 86400 detik (1 hari), dan log merepresentasikan nama Logstore.

    • Tampilkan hasil sebagai array

      • Pernyataan kueri (Debug)

        * |
        SELECT
          compare(PV, 86400)
        FROM  (
            SELECT
              count(*) AS PV
            FROM      log
          )
      • Hasil kueri dan analisis

        • 3337.0: Jumlah PV untuk jam saat ini (misalnya, dari pukul 14:00:00 hingga 15:00:00 pada 25 Desember 2020).

        • 3522.0: Jumlah PV untuk jam yang sama pada hari sebelumnya (misalnya, dari pukul 14:00:00 hingga 15:00:00 pada 24 Desember 2020).

        • 0.947473026689381: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.

    • Tampilkan hasil dalam kolom terpisah

      • Pernyataan kueri (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
              )
          )

        Fungsi compare mengembalikan sebuah array, di mana diff adalah alias untuk hasil tersebut, dan diff [1] mengambil nilai pertama dari array.

      • Hasil kueri dan analisis

        • 3337.0: Jumlah PV untuk jam saat ini (misalnya, dari pukul 14:00:00 hingga 15:00:00 pada 25 Desember 2020).

        • 3522.0: Jumlah PV untuk jam yang sama pada hari sebelumnya (misalnya, dari pukul 14:00:00 hingga 15:00:00 pada 24 Desember 2020).

        • 0.947473026689381: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.

  • Contoh 2: Untuk jam saat ini, hitung jumlah permintaan untuk setiap kombinasi status permintaan dan metode, lalu bandingkan hasilnya dengan jumlah dari jam sebelumnya.

    Pilih 1 Hour (Aligned Time) sebagai rentang waktu untuk kueri dan analisis, lalu jalankan pernyataan kueri dan analisis berikut. Dalam pernyataan tersebut, 3600 merepresentasikan waktu saat ini dikurangi 3600 detik (1 jam), dan log merepresentasikan nama Logstore.

    • Pernyataan kueri (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
    • Hasil kueri dan analisis: Hasil mencakup tiga kolom: status, request_method, dan _col2. Kolom _col2 berisi array yang dikembalikan oleh fungsi compare dalam format [current_period_value, previous_period_value, ratio]. Sebagai contoh, baris untuk kode status 501 dan metode permintaan GET mengembalikan [39.0, 13.0, 3.0]. Ini menunjukkan jumlah PV sebesar 39 untuk periode saat ini, 13 untuk periode sebelumnya, dan rasio period-over-period sebesar 3.0.

Ts_compare function

Fungsi ts_compare membandingkan hasil perhitungan untuk waktu yang selaras (misalnya per jam) pada periode saat ini dengan hasil dari waktu yang sesuai pada periode sebelumnya.

Penting

Fungsi ts_compare memerlukan klausa GROUP BY dengan satu kolom waktu.

Sintaks

  • Membandingkan hasil perhitungan untuk waktu yang selaras pada periode waktu saat ini dengan hasil dari waktu yang selaras pada periode n detik sebelumnya.

    ts_compare(x, n)
  • Membandingkan hasil perhitungan untuk waktu yang selaras pada periode saat ini dengan hasil dari waktu yang sesuai n1, n2, n3... detik sebelumnya.

    ts_compare(x, n1, n2, n3...)

Parameter

Parameter

Deskripsi

x

Nilai yang akan dibandingkan. Nilai harus bertipe double atau long.

n

Jendela waktu dalam satuan detik. Contoh: 3600 (1 jam), 86400 (1 hari), 604800 (1 minggu), atau 31622400 (1 tahun).

Nilai kembalian

Mengembalikan sebuah array. Untuk offset waktu tunggal n, formatnya adalah [current_result, previous_result, ratio, previous_unix_timestamp]. Ketika beberapa offset waktu (n1, n2, ...) ditentukan, formatnya adalah [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_unix_timestamp_1, previous_unix_timestamp_2, ...].

Contoh

  • Contoh 1: Bandingkan jumlah tampilan halaman (PVs) per jam hari ini dengan jumlah pada jam yang sama pada hari sebelumnya dan dua hari lalu.

    Tetapkan rentang waktu untuk kueri dan analisis ke Today (Aligned Time), lalu jalankan pernyataan kueri berikut. Dalam pernyataan ini, 86400 merepresentasikan waktu saat ini dikurangi 86400 detik (1 hari), 172800 merepresentasikan waktu saat ini dikurangi 172800 detik (2 hari), log merepresentasikan nama Logstore, dan date_trunc('hour',__time__ ) merepresentasikan penggunaan fungsi date_trunc untuk menyelaraskan waktu ke jam.

    • Tampilkan hasil sebagai array

      • Pernyataan kueri (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
      • Hasil kueri dan analisis

        • 1174.0: Jumlah PV untuk periode waktu saat ini (misalnya, dari pukul 00:00 hingga 01:00 pada 22 September 2022).

        • 1191.0: Jumlah PV untuk periode waktu yang sama pada hari sebelumnya (misalnya, dari pukul 00:00 hingga 01:00 pada 21 September 2022).

        • 1253.0: Jumlah PV untuk periode waktu yang sama dua hari lalu (misalnya, dari pukul 00:00 hingga 01:00 pada 20 September 2022).

        • 0.9857262804366079: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.

        • 0.936951316839585: Rasio jumlah PV antara jam saat ini dan jam yang sama dua hari lalu.

        • 1663689600.0: Stempel waktu UNIX untuk pukul 00:00 pada 21 September 2022.

        • 1663603200.0: Stempel waktu UNIX untuk pukul 00:00 pada 20 September 2022.

        Catatan

        Stempel waktu dalam hasil dapat berbeda tergantung kapan Anda menjalankan kueri.

    • Tampilkan hasil dalam kolom terpisah

      • Pernyataan kueri (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
          )
      • Hasil kueri dan analisis: Setiap baris dalam tabel hasil merepresentasikan data satu jam. time adalah stempel waktu per jam. day1, day2, dan day3 adalah jumlah PV untuk hari saat ini, hari sebelumnya, dan dua hari sebelumnya, secara berurutan. ratio1 adalah rasio antara hari saat ini dan hari sebelumnya, sedangkan ratio2 adalah rasio antara hari saat ini dan dua hari sebelumnya. Nilai yang mendekati 1.0 menunjukkan sedikit perubahan.

  • Contoh 2: Hitung perubahan jumlah tampilan halaman (PVs) dari jam ke jam untuk hari ini.

    Tetapkan rentang waktu untuk kueri dan analisis ke Today (relative), lalu jalankan pernyataan kueri berikut. Dalam pernyataan ini, 3600 merepresentasikan waktu saat ini dikurangi 3600 detik (1 jam), log adalah nama Logstore, dan date_trunc('hour',__time__ ) menggunakan fungsi date_trunc untuk menyelaraskan waktu ke jam.

    • Pernyataan kueri (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
    • Hasil kueri dan analisis berisi dua kolom: time dan data. Sebagai contoh, ketika time adalah 2021-01-27 00:00:00.000, data adalah [1160.0,10034.0,0.11560693641618497,1611673200.0]. Ketika time adalah 2021-01-27 01:00:00.000, data adalah [10177.0,1160.0,8.773275862068966,1611676800.0]. Ketika time adalah 2021-01-27 02:00:00.000, data adalah [26804.0,10177.0,2.633782057580195,1611680400.0].

      Catatan

      Stempel waktu dalam hasil dapat berbeda tergantung kapan Anda menjalankan kueri.