uniqCombined64
uniqCombined64
導入バージョン: v20.1
引数の異なる値の概算個数を計算します。
uniqCombined と同じですが、String 型だけでなくすべてのデータ型に対して 64 ビットハッシュを使用します。
この関数は決定的に結果を返します(クエリ処理順序には依存しません)。
注記
すべての型に対して 64 ビットハッシュを使用するため、非 String 型に対して 32 ビットハッシュを使用する uniqCombined のように、UINT_MAX を大きく超えるカーディナリティに対して非常に大きな誤差が発生することはありません。
uniq 関数と比較して、uniqCombined64 関数は次の特徴があります。
- メモリ消費量が数倍少ない
- 計算精度が数倍高い
Details
実装の詳細
この関数は、集約のすべてのパラメータに対して 64 ビットハッシュを計算し、それを用いて計算を行います。 アルゴリズムとして、配列・ハッシュテーブル・誤差補正テーブル付きの HyperLogLog の 3 つを組み合わせて使用します。- 相異なる要素数が少ない場合は、配列を使用します
- 集合のサイズが大きくなると、ハッシュテーブルを使用します
- さらに要素数が増えると、固定量のメモリで動作する 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 型の数値を返します。UInt64
例
大規模データセットの例
uniqCombinedとの比較
関連項目