Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined64

uniqCombined64

導入バージョン: v20.1.0

異なる引数値のおおよその個数を計算します。 uniqCombined と同じですが、String データ型 だけでなく、すべてのデータ型に対して 64 ビットハッシュ を使用します。

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

uniq 関数と比べると、uniqCombined64 関数には次の特長があります。

  • メモリ消費量が数分の一で済みます
  • 精度が数倍高くなります
実装の詳細

この関数は、集約内のすべての parameter について、すべてのデータ型に対する 64 ビットハッシュ を計算し、それを計算に使用します。 array、ハッシュ table、誤差補正テーブル付きの HyperLogLog という 3 つのアルゴリズムを組み合わせて使用します。

  • 異なる要素数が少ない場合は、array を使用します
  • set のサイズが大きくなると、ハッシュ table を使用します
  • 要素数がさらに多い場合は HyperLogLog を使用し、一定量のメモリを使用します

構文

uniqCombined64(HLL_precision)(x[, ...])
uniqCombined64(x[, ...])

パラメータ

  • HLL_precision — 省略可能。HyperLogLog のセル数の2を底とする対数です。デフォルト値は 17 で、実質的な使用容量は 96 KiB です (2^17 個のセル、各 6 ビット) 。範囲: [12, 20]。UInt8

引数

戻り値

異なる引数値のおおよその数を表す UInt64 型の値を返します。UInt64

大規模データセットの例

SELECT uniqCombined64(number) FROM numbers(1e10);
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘

uniqCombinedとの比較

-- uniqCombined64 with large dataset
SELECT uniqCombined64(number) FROM numbers(1e10);

-- uniqCombined with same dataset shows poor approximation
SELECT uniqCombined(number) FROM numbers(1e10);
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘
┌─uniqCombined(number)─┐
│           5545308725 │
└──────────────────────┘

関連項目

Navigation