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 ビットハッシュ)を計算し、その値を用いて計算を行います。
- 3 つのアルゴリズム(配列、ハッシュテーブル、誤差補正テーブル付き HyperLogLog)を組み合わせて使用します。
- 相異なる要素数が少ない場合は、配列を使用します。
- 集合のサイズが大きくなると、ハッシュテーブルを使用します。
- さらに要素数が多い場合は、一定量のメモリを使用する HyperLogLog を使用します。
- 結果は決定的であり(クエリの処理順序に依存しません)、常に同じ値を返します。
注記
すべての型に対して 64 ビットハッシュを使用するため、非 String 型に対して 32 ビットハッシュを使用する uniqCombined とは異なり、UINT_MAX を大きく超えるカーディナリティに対しても非常に大きな誤差は生じません。
uniq 関数と比較して、uniqCombined64 関数は次の特徴があります。
- 使用するメモリ量が数倍少ない。
- 計算精度が数倍高い。
例
以下の例では、uniqCombined64 を 1e10 個の異なる数値に対して実行し、異なる引数値の個数に非常に近い近似値を返します。
クエリ:
結果:
比較すると、この程度のサイズの入力に対しては、uniqCombined 関数はあまり精度の高くない近似結果を返します。
クエリ:
結果:
関連項目