uniqCombined
String 以外の型には 32 ビットハッシュを使用するため、カーディナリティが
UINT_MAX を大幅に超える場合、結果の誤差は非常に大きくなります (異なる値が数百億件規模になると、誤差は急速に増加します) 。
カーディナリティが UINT_MAX を超える場合は、代わりに uniqCombined64 を使用してください。- メモリ消費量を数分の一に抑えられます
- 精度が数倍高くなります
- 通常、パフォーマンスはわずかに低下します。ただし、状況によっては uniqCombined のほうが uniq より高いパフォーマンスを示すことがあります。たとえば、ネットワーク経由で多数の集約状態を転送する分散クエリの場合です
実装の詳細
実装の詳細
この関数は、集約内のすべてのパラメータに対してハッシュ (String には 64 ビットハッシュ、それ以外には 32 ビット) を計算し、それを計算に使用します。
配列、hash table、誤り補正テーブル付き HyperLogLog の 3 つのアルゴリズムを組み合わせて使用します。
- 異なる要素数が少ない場合は、配列を使用します
- 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