Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined

uniqCombined

導入バージョン: v1.1.0

異なる引数値のおおよその個数を計算します。 結果は決定論的です (クエリ処理の順序には依存しません) 。

uniq 関数と比較すると、uniqCombined 関数には次の特徴があります。

  • メモリ消費量を数分の一に抑えられます
  • 精度が数倍高くなります
  • 通常、パフォーマンスはわずかに低下します。ただし、状況によっては uniqCombined のほうが uniq より高いパフォーマンスを示すことがあります。たとえば、ネットワーク経由で多数の集約状態を転送する分散クエリの場合です
実装の詳細

この関数は、集約内のすべてのパラメータに対してハッシュ (String には 64 ビットハッシュ、それ以外には 32 ビット) を計算し、それを計算に使用します。 配列、hash table、誤り補正テーブル付き HyperLogLog の 3 つのアルゴリズムを組み合わせて使用します。

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

構文

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

パラメータ

  • HLL_precision — オプション。HyperLogLog のセル数の 2 を底とする対数です。デフォルト値は 17 で、実質的に 96 KiB の領域を使用します (2^17 個のセル、それぞれ 6 ビット) 。範囲: [12, 20]。UInt8

引数

戻り値

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

基本的な使い方

SELECT uniqCombined(number) FROM numbers(1e6);
┌─uniqCombined(number)─┐
│              1001148 │
└──────────────────────┘

カスタム精度

SELECT uniqCombined(15)(number) FROM numbers(1e5);
┌─uniqCombined(15)(number)─┐
│                   100768 │
└──────────────────────────┘

関連項目

Navigation