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

Simple Log Service:HyperLogLog 関数

最終更新日:Jun 04, 2026

HyperLogLog 関数は、approx_distinct のような近似集計関数です。大規模なデータセットを分析する際に、推定結果を迅速に返します。

以下の HyperLogLog 関数が利用可能です。

重要

分析文で文字列を使用する場合は、文字列を一重引用符 ('') で囲む必要があります。囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。たとえば、 'status' は「status」という文字列を示し、status または "status" は「status」というフィールドを示します。

関数

構文

説明

SQL サポート

SPL サポート

approx_set 関数

approx_set(x)

x 内の個別値の数を推定します。デフォルトの最大標準誤差は 0.01625 です。

×

cardinality 関数

cardinality(x)

HyperLogLog 値を bigint 値に変換します。

×

empty_approx_set 関数

empty_approx_set()

空の HyperLogLog セットを返します。デフォルトの最大標準誤差は 0.01625 です。

×

merge 関数

merge(x)

複数の HyperLogLog セットを 1 つのセットにマージします。

×

approx_set 関数

approx_set 関数は、x 内の個別値の数を推定します。デフォルトの最大標準誤差は 0.01625 です。

構文

approx_set(x)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

戻り値のデータ型

HyperLogLog

Web サイトの 1 分あたりのユニークビジター (UV) を推定します。結果は HyperLogLog 形式です。

  • クエリと分析文

    * |
    SELECT
      date_trunc('minute', __time__) AS Time,
      approx_set(client_ip) AS UV
    FROM  website_log
    GROUP BY
      Time
    ORDER BY
      Time
  • クエリと分析結果:Time (分単位に切り捨てられたタイムスタンプ) と UV (approx_set によるエンコードされた近似セット) を返します。合計:16 レコード。

cardinality 関数

cardinality 関数は、HyperLogLog 値を bigint 値に変換します。

構文

cardinality(x)

パラメーター

パラメーター

説明

x

HyperLogLog 式。

戻り値のデータ型

bigint

approx_set を使用して 1 分あたりの UV を推定し (HyperLogLog 値を返す)、次に cardinality を使用してその値を bigint に変換します。

  • クエリと分析文

    * |
    SELECT
      Time,
      cardinality(UV) AS UV
    FROM  (
        SELECT
          date_trunc('minute', __time__) AS Time,
          approx_set(client_ip) AS UV
        FROM      website_log
        GROUP BY
          Time
        ORDER BY
          Time
      ) AS UV
  • 結果には、Time 列と UV 列に 1 分あたりの UV 数が示されます。例えば、2021-09-09 15:12:00 に 78 UV、15:13:00 に 561 UV となります。

empty_approx_set 関数

empty_approx_set 関数は、空の HyperLogLog セットを返します。デフォルトの最大標準誤差は 0.01625 です。

構文

empty_approx_set()

戻り値のデータ型

HyperLogLog

空の HyperLogLog セットを返します。

  • クエリと分析文

    * | SELECT  empty_approx_set()
  • 単一の列 _col0 を返し、その値は AgwAAA== (Base64 でエンコードされた空の近似セット) です。

merge 関数

merge 関数は、複数の HyperLogLog セットを 1 つのセットにマージします。

構文

merge(x)

パラメーター

パラメーター

説明

x

HyperLogLog 式。

戻り値のデータ型

HyperLogLog

approx_set を使用して 1 分あたりの UV を推定し、merge を使用して UV セットをマージし、cardinality を使用して最終的な値を bigint に変換します。

  • クエリと分析文

    * |
    SELECT
      Time,
      cardinality(UV) AS UV,
      cardinality(merge(UV) over()) AS Total_UV
    FROM  (
        SELECT
          date_trunc('minute', __time__) AS Time,
          approx_set(client_ip) AS UV
        FROM      website_log
        GROUP BY
          Time
        ORDER BY
          Time
      )
  • クエリと分析結果:1 分あたりの UV 数は変動しますが (561、658、625)、Total_UV はすべての行で同じ全体の合計値 (8564) を示します。