すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:比較期間関数

最終更新日:Mar 26, 2026

このトピックでは、比較期間関数の構文と使用例について説明します。

Log Service は、以下の比較期間関数をサポートしています。

重要

分析文で文字列を使用する場合は、文字列をシングルクォーテーション ('') で囲む必要があります。囲まれていない文字列、またはダブルクォーテーション ("") で囲まれた文字列は、フィールド名またはカラム名を示します。たとえば、'status' はステータス文字列を示し、status または "status" はステータスログフィールドを示します。

関数

構文

説明

SQL

SPL

compare 関数

compare(x, n)

現在の期間の結果を、n 秒前の期間の結果と比較します。

×

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

現在の期間の結果を、n1、n2、n3... 秒前の期間の結果と比較します。

×

ts_compare 関数

ts_compare(x, n)

現在の期間における整列された時間 (例: 1 時間ごと) の結果を、n 秒前の期間における対応する時間の結果と比較します。

×

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

現在の期間における整列された時間 (例: 1 時間ごと) の結果を、n1、n2、n3... 秒前の期間における対応する時間の結果と比較します。

×

重要
  • ts_compare 関数には、単一のタイムカラムを持つ GROUP BY 句が必要です。

  • compare 関数と ts_compare 関数はネストできません。

compare 関数

compare 関数は、現在の期間の結果を、1 つ以上の以前の期間の結果と比較します。

構文

  • 現在の結果を、単一の以前の期間の結果と比較します。

    compare(x, n)
  • 現在の結果を、複数の以前の期間の結果と比較します。

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

パラメータ

パラメータ

説明

x

比較する値。double または long である必要があります。

n

秒単位のタイムウィンドウ。例: 3600 (1 時間)、86400 (1 日)、604800 (1 週間)、または 31622400 (1 年)。

戻り値

配列を返します。単一の時間オフセット n の場合、形式は [current_result, previous_result, ratio] です。複数の時間オフセット (n1, n2, ...) が指定されている場合、形式は [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...] です。

  • 例 1: 現在の時間と前日の同じ時間のページビュー (PV) の比率を計算します。

    クエリと分析の時間範囲を [1 時間(アライメント済み)] に設定し、次のクエリ文を実行します。この文では、86400 は 86,400 秒(1 日)のオフセットを指定し、log は Logstore の名前です。

    • 結果を配列で表示

      • クエリ文 (デバッグ)

        * |
        SELECT
          compare(PV, 86400)
        FROM  (
            SELECT
              count(*) AS PV
            FROM      log
          )
      • クエリと分析結果PV比

        • [3337.0]: 当該時間帯のPV数(例:2020-12-25の14:00:00~15:00:00)。

        • 3522.0: 前日の同じ時間帯の PV 数 (例: 2020-12-24 の 14:00:00 から 15:00:00 まで)。

        • 0.947473026689381:現在の時間と前日の同時間の PV の比率。

    • 結果を個別のカラムで表示

      • クエリ文 (デバッグ)

        * |
        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
              )
          )

        compare 関数は配列を返します。このクエリでは、diff は結果配列のエイリアスであり、diff[1] は配列から最初の要素を抽出します。

      • クエリと分析結果同比结果

        • [3337.0]: 現在の時間帯のPV数(例:2020-12-25 の 14:00:00 ~ 15:00:00)。

        • 3522.0: 前日の同じ時間帯の PV 数で、たとえば 2020-12-24 の 14:00:00 から 15:00:00 までです。

        • [0.947473026689381]:現在の時間帯と前日の同一時間帯の PV の比率です。

  • 例 2: 現在の時間におけるステータスとメソッドごとのリクエスト数をカウントし、これらのカウントを前の時間と比較します。

    クエリと分析の時間範囲を [1 時間(アライメント済み)] に設定し、次のクエリ文を実行します。この文では、3600 は 3,600 秒(1 時間)のオフセットを指定し、log は Logstore の名前です。

    • クエリ文([デバッグ]

      * |
      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
    • クエリと分析結果同比和环比函数

ts_compare 関数

ts_compare 関数は、現在の期間における整列された時間 (例: 1 時間ごと) の結果を、1 つ以上の以前の期間における同じ整列された時間の結果と比較します。

重要

ts_compare 関数には、単一のタイムカラムを持つ GROUP BY 句が必要です。

構文

  • 整列された時間の結果を、単一の以前の期間における対応する時間の結果と比較します。

    ts_compare(x, n)
  • 整列された時間の結果を、複数の以前の期間における対応する時間の結果と比較します。

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

パラメータ

パラメータ

説明

x

比較する値。double または long である必要があります。

n

秒単位のタイムウィンドウ。例: 3600 (1 時間)、86400 (1 日)、604800 (1 週間)、または 31622400 (1 年)。

戻り値

配列を返します。単一の時間オフセット n の場合、形式は [current_result, previous_result, ratio, previous_UNIX_timestamp] です。複数の時間オフセット (n1, n2, ...) が指定されている場合、形式は [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_UNIX_timestamp_1, previous_UNIX_timestamp_2, ...] です。

  • 例 1: 今日の時間ごとのページビュー (PV) を、2 日前までの同じ時間の PV と比較します。

    クエリと分析の時間範囲を [本日 (調整済み)] に設定し、次のクエリ文を実行します。この文では、86400 は 1 日のオフセットを、172800 は 2 日のオフセットを指定します。log は Logstore の名前であり、date_trunc('hour',__time__) はタイムスタンプを時間単位で揃えます。

    • 結果を配列で表示

      • クエリ文(デバッグ

        * |
        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
      • クエリと分析結果每分钟PV

        • 1174.0: 現在の期間のPVです。たとえば、2022年9月22日の00:00~01:00です。

        • 1191.0: 前日の同時間帯における PV 数 (例: 2022-09-21 の 00:00~01:00)。

        • 1253.0: 2日前の同一の時間帯のPV(たとえば、2022年9月20日の00:00~01:00)。

        • [0.9857262804366079]: 現在の時間帯と前日の同一時間帯における PV の比率。

        • 0.936951316839585: 現在の時間帯と2日前の同一時間帯のPV の比率。

        • 1663689600.0: 2022-09-21 00:00 の UNIX タイムスタンプです。

        • 1663603200.0: 2022-09-20 の 00:00 の UNIX タイムスタンプです。

        説明

        結果のタイムスタンプは、クエリを実行するタイミングによって異なる場合があります。

    • 結果を個別のカラムで表示

      • クエリ文 (デバッグ)

        * |
        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
          )
      • クエリと分析結果同比

  • 例 2: 今日のページビューの時間ごとの変化を計算します。

    クエリと分析の時間範囲を [今日(相対)] に設定し、次のクエリ文を実行します。この文では、3600 は 3,600 秒(1 時間)のオフセットを指定し、log は Logstore の名前であり、date_trunc('hour',__time__ ) はタイムスタンプを時単位で揃えます。

    • クエリ文 (デバッグ)

      * |
      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
    • クエリと分析結果ts_compare

      説明

      結果のタイムスタンプは、クエリを実行するタイミングによって異なる場合があります。