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

Simple Log Service:期間比較関数

最終更新日:Jan 08, 2026

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

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

重要

分析文で文字列を使用する場合は、文字列をシングルクォーテーション (') で囲む必要があります。囲まれていない文字列や、ダブルクォーテーション (") で囲まれた文字列は、フィールド名または列名を示します。たとえば、'status' は status という文字列を示し、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 句を使用して時間列でグループ化する必要があります。サポートされている時間列は 1 つだけです。

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

compare 関数

compare 関数は、現在の期間の計算結果を、n 秒前の期間の計算結果と比較します。

構文

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

    compare(x, n)
  • 現在の期間の計算結果を、n1、n2、n3 秒前の複数の期間の計算結果と比較します。

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

パラメーター

パラメーター

説明

x

値は double 型または long 型です。

n

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

戻り値の型

配列。フォーマットは [現在の結果, n 秒前の結果, 現在の結果と n 秒前の結果の比率] です。

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

    クエリの時間範囲を [1時間 (時間枠)] に設定し、次のクエリ文を実行します。この文では、86400 は現在時刻の 86,400 秒 (1 日) 前の期間を指定し、log は Logstore 名を指定します。

    • クエリと分析の結果は配列として返されます。

      • クエリ文 (デバッグ)

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

        • 3337.0 は、現在の時間 (例:2020年12月25日 14:00:00 から 15:00:00 まで) の PV 数です。

        • 3522.0 は、昨日の同じ時間 (例:2020年12月24日 14:00:00 から 15:00:00 まで) の PV 数です。

        • 0.947473026689381 は、現在の時間の PV と昨日の同じ時間の 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 は、現在の時間 (例:2020年12月25日 14:00:00 から 15:00:00 まで) の PV 数です。

        • 3522.0 は、昨日の同じ時間 (例:2020年12月24日 14:00:00 から 15:00:00 まで) の PV 数です。

        • 0.947473026689381 は、現在の時間の PV と昨日の同じ時間の 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 時間ごとなど) の計算結果を、n 秒前の時間枠の計算結果と比較します。

重要

ts_compare 関数の結果は、GROUP BY 句を使用して時間列でグループ化する必要があります。サポートされている時間列は 1 つだけです。

構文

  • 現在の期間における時間枠 (1 時間ごとなど) の計算結果を、n 秒前の時間枠の計算結果と比較します。

    ts_compare(x, n)
  • 現在の期間における時間枠 (1 時間ごとなど) の計算結果を、n1、n2、n3 秒前の時間枠の計算結果と比較します。

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

パラメーター

パラメーター

説明

x

値は double 型または long 型です。

n

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

戻り値の型

配列。フォーマットは [現在の結果, n 秒前の結果, 現在の結果と n 秒前の結果の比率, n 秒前の UNIX タイムスタンプ] です。

  • 例 1:今日の 1 時間ごとの Web サイト PV と、昨日および一昨日の同じ時間の PV との比率を計算します。

    クエリの時間範囲を [本日 (時間枠)] に設定し、次のクエリ文を実行します。この文では、86400 は現在時刻の 86,400 秒 (1 日) 前の期間を指定し、172800 は現在時刻の 172,800 秒 (2 日) 前の期間を指定し、log は Logstore 名を指定し、date_trunc('hour',__time__) は date_trunc 関数を使用して時間を時単位に揃えます。

    • クエリと分析の結果を配列で表示します。

      • クエリ文 (デバッグ)

        * |
        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 は、現在の期間 (例:2022年9月22日 00:00 から 01:00 まで) の PV 数です。

        • 1191.0 は、昨日の同じ期間 (例:2022年9月21日 00:00 から 01:00 まで) の PV 数です。

        • 1253.0 は、一昨日の同じ期間 (例:2022年9月20日 00:00 から 01:00 まで) の PV 数です。

        • 0.9857262804366079 は、現在の期間と昨日の同じ期間の PV の比率です。

        • 0.936951316839585 は、現在の期間と一昨日の同じ期間の PV の比率です。

        • 1663689600.0 は、2022年9月21日 00:00 の UNIX タイムスタンプです。

        • 1663603200.0 は、2022年9月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:今日の Web サイト PV の時間ごとの変化を計算します。

    クエリの時間範囲を [本日 (相対)] に設定し、次のクエリ文を実行します。この文では、3600 は現在時刻の 3,600 秒 (1 時間) 前の期間を指定し、log は Logstore 名を指定し、date_trunc('hour',__time__) は date_trunc 関数を使用して時間を時単位に揃えます。

    • クエリ文 (デバッグ)

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

      説明

      クエリと分析の結果に表示される時間は、クエリを実行する時間によって異なる場合があります。