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

Simple Log Service:比較期間関数

最終更新日:Mar 19, 2025

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

次の表に、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)

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

×

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

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

×

重要
  • compare 関数を使用する場合、データを比較する基準となる時間は同じである必要があります。

    たとえば、compare 関数を使用して、現在の時間帯のデータと前日の同じ時間帯のデータを比較できます。ただし、compare 関数を使用して、現在の時間帯のデータと前の時間帯のデータを比較することはできません。

  • ts_compare 関数のクエリと分析結果は、GROUP BY 句を使用して時間列でグループ化する必要があります。

  • compare 関数と ts_compare 関数は、ネストされた使用をサポートしていません。

compare 関数

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

構文

  • 現在の期間の計算結果と n 秒前の期間の計算結果を比較するには、次の構文を使用します。

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

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

パラメーター

パラメーター

説明

x

このパラメーターの値は、double 型または long 型です。

n

タイムウィンドウ。単位:秒。例:3600、86400、604800、31622400。これらの値は、1 時間、1 日、1 週間、1 年を示します。

戻り値の型

配列型。戻り値の形式は次のとおりです。[現在の期間の計算結果、n 秒前の期間の計算結果、現在の期間の計算結果と n 秒前の期間の計算結果の比率]。

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

    時間範囲を [1 時間 (時間枠)] に設定し、次のクエリ文を実行します。 86400 は現在の時間から 86,400 秒を引いた値を指定します。これは 1 日に相当します。 log は、使用するログストアの名前を指定します。

    • クエリと分析結果を配列で表示するには、次のクエリ文を実行します。

      • クエリ文 (デバッグ)

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

        • [3337.0] は、現在の時間帯の PV を示します。例:2020 年 12 月 25 日 14:00:00 から 15:00:00 までの PV。

        • [3522.0] は、前日の同じ時間帯の PV を示します。例: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] は、現在の時間帯の PV を示します。例:2020 年 12 月 25 日 14:00:00 から 15:00:00 までの PV。

        • [3522.0] は、前日の同じ時間帯の PV を示します。例:2020 年 12 月 24 日 14:00:00 から 15:00:00 までの PV。

        • [0.947473026689381] は、現在の時間帯の PV と前日の同じ時間帯の PV の比率を示します。

  • 例 2:現在の時間帯のリクエストメソッドの数をリクエストステータス別にクエリし、現在の時間帯の数と前日の同じ時間帯の数を比較します。

    時間範囲を [1 時間 (時間枠)] に設定し、次のクエリ文を実行します。 3600 は現在の時間から 3,600 秒を引いた値を指定します。これは 1 時間に相当します。 log は、使用するログストアの名前を指定します。

    • クエリ文 (デバッグ)

      * |
      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 関数は、現在の期間の計算結果と、n 秒前の期間の計算結果を比較します。

重要

ts_compare 関数のクエリと分析結果は、GROUP BY 句を使用して時間列でグループ化する必要があります。

構文

  • 現在の期間の計算結果と、n 秒前の期間の計算結果を比較するには、次の構文を使用します。

    ts_compare(x, n)
  • 現在の期間の計算結果と、n1、n2、n3 秒前の複数の期間の計算結果を比較するには、次の構文を使用します。

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

パラメーター

パラメーター

説明

x

このパラメーターの値は、double 型または long 型です。

n

タイムウィンドウ。単位:秒。例:3600、86400、604800、31622400。これらの値は、1 時間、1 日、1 週間、1 年を示します。

戻り値の型

配列型。戻り値の形式は次のとおりです。[現在の期間の計算結果、n 秒前の期間の計算結果、現在の期間の計算結果と n 秒前の期間の計算結果の比率、n 秒前の期間の UNIX タイムスタンプ]。

  • 例 1:今日の 1 時間ごとの PV と、前日および 2 日前の同じ時間帯の PV の比率を計算します。

    時間範囲を [今日 (時間枠)] に設定し、次のクエリ文を実行します。 86400 は現在の時間から 86,400 秒を引いた値を指定します。これは 1 日に相当します。 172800 は現在の時間から 172,800 秒を引いた値を指定します。これは 2 日に相当します。 log は、使用するログストアの名前を指定します。 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 までの PV。

        • [1191.0] は、前日の同じ時間帯の PV を示します。例:2022 年 9 月 21 日 00:00 から 01:00 までの PV。

        • [1253.0] は、2 日前の同じ時間帯の PV を示します。例:2022 年 9 月 20 日 00:00 から 01:00 までの PV。

        • [0.9857262804366079] は、現在の期間の PV と前日の同じ時間帯の PV の比率を示します。

        • [0.936951316839585] は、現在の期間の PV と 2 日前の同じ期間の 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:1 時間ごとの PV と、当日内の前の時間帯の PV の比率を計算します。

    時間範囲を [今日 (相対)] に設定し、次のクエリ文を実行します。 3600 は現在の時間から 3,600 秒を引いた値を指定します。これは 1 時間に相当します。 log は、使用するログストアの名前を指定します。 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

      説明

      クエリと分析結果で返される時間は、実際のシナリオによって異なります。