uniqCombined64
uniqCombined と同じですが、String データ型 だけでなく、すべてのデータ型に対して 64 ビットハッシュ を使用します。
この関数は決定論的な結果を返します (クエリ処理の順序に依存しません) 。
すべての型に対して 64 ビットハッシュ を使用するため、非 String 型に 32 ビット hash を使用する
uniqCombined のように、UINT_MAX を大幅に超えるカーディナリティで非常に大きな error が発生することはありません。- メモリ消費量が数分の一で済みます
- 精度が数倍高くなります
実装の詳細
実装の詳細
この関数は、集約内のすべての parameter について、すべてのデータ型に対する 64 ビットハッシュ を計算し、それを計算に使用します。
array、hash table、誤差補正テーブル付きの HyperLogLog という 3 つのアルゴリズムを組み合わせて使用します。
- 異なる要素数が少ない場合は、array を使用します
- set のサイズが大きくなると、hash table を使用します
- 要素数がさらに多い場合は HyperLogLog を使用し、一定量のメモリを使用します
HLL_precision— 省略可能。HyperLogLog のセル数の2を底とする対数です。デフォルト値は 17 で、実質的な使用容量は 96 KiB です (2^17 個のセル、各 6 ビット) 。範囲: [12, 20]。UInt8
x— 可変個の引数。Tuple(T)またはArray(T)またはDateまたはDateTimeまたはStringまたは(U)Int*またはFloat*またはDecimal
UInt64
例
大規模データセットの例
Query
Response
Query
Response