メインコンテンツへスキップ
メインコンテンツへスキップ

uniqHLL12

uniqHLL12

導入バージョン: v1.1

HyperLogLog アルゴリズムを使用して、異なる引数値のおおよその個数を計算します。

注意

この関数の使用は推奨しません。ほとんどの場合、uniq または uniqCombined 関数を使用してください。

Details

実装の詳細 この関数は集約内のすべてのパラメータに対してハッシュ値を計算し、そのハッシュ値を使って計算を行います。 異なる引数値の個数を近似するために HyperLogLog アルゴリズムを使用します。

2^12 個の 5-bit セルを使用します。 集約状態のサイズは 2.5 KB を少し上回ります。 小さいデータセット(<10K 要素)では結果の精度があまり高くなく、誤差は最大で約 10% になります。 一方、高カーディナリティのデータセット(10K〜100M)では比較的高い精度で、最大誤差は約 1.6% です。 100M を超えると推定誤差が大きくなり、超高カーディナリティ(1B+ 要素)のデータセットに対しては非常に不正確な結果を返すようになります。

決定論的な結果を返します(クエリ処理順序に依存しません)。

構文

uniqHLL12(x[, ...])

引数

戻り値

異なる引数値の概算個数を表す UInt64 型の値を返します。UInt64

基本的な使用方法

CREATE TABLE example_hll
(
    id UInt32,
    category String
)
ENGINE = Memory;

INSERT INTO example_hll VALUES
(1, 'A'), (2, 'B'), (3, 'A'), (4, 'C'), (5, 'B'), (6, 'A');

SELECT uniqHLL12(category) AS hll_unique_categories
FROM example_hll;
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘

関連項目