uniqCombined64
異なる引数の値の近似数を計算します。これは uniqCombined と同じですが、String データ型だけでなく、すべてのデータ型に対して 64 ビットハッシュを使用します。
パラメータ
HLL_precision
: HyperLogLog のセルの数の基数 2 の対数。オプションで、uniqCombined64(x[, ...])
として関数を使用できます。HLL_precision
のデフォルト値は 17 で、実質的に 96 KiB のスペース(2^17 セル、各 6 ビット)を使用します。X
: 可変数のパラメータ。パラメータはTuple
、Array
、Date
、DateTime
、String
、または数値型を取ることができます。
返される値
- UInt64-型の数値。
実装の詳細
uniqCombined64
関数は次のことを行います:
- 集約内のすべてのパラメータのハッシュ(すべてのデータ型に対して 64 ビットのハッシュ)を計算し、それを計算に使用します。
- 配列、ハッシュテーブル、および誤差修正テーブルを用いた HyperLogLog の三つのアルゴリズムの組み合わせを使用します。
- 異なる要素数が少ない場合は、配列を使用します。
- セットサイズが大きくなると、ハッシュテーブルを使用します。
- 要素数がさらに大きい場合は、固定量のメモリを占有する HyperLogLog を使用します。
- 結果は決定論的に提供されます(クエリ処理順序に依存しません)。
注記
すべての型に対して 64 ビットハッシュを使用するため、結果は UINT_MAX
よりもはるかに大きい数の基数に対して非常に高い誤差の影響を受けません。これは、非 String
型に対して 32 ビットハッシュを使用する uniqCombined とは異なります。
uniq 関数と比較すると、uniqCombined64
関数は:
- 消費するメモリが数倍少ないです。
- 計算精度が数倍高いです。
例
以下の例では、uniqCombined64
を 1e10
異なる数字に対して実行し、異なる引数の値の近似数を非常に近い値で返します。
クエリ:
結果:
比較すると、uniqCombined
関数はこのサイズの入力に対してかなり悪い近似値を返します。
クエリ:
結果:
関連項目