メインコンテンツまでスキップ
メインコンテンツまでスキップ

uniqCombined

異なる引数値の概算数を計算します。

uniqCombined 関数は、異なる値の数を計算するための良い選択です。

引数

  • HLL_precision: HyperLogLog のセル数の2進対数。オプションで、uniqCombined(x[, ...]) として関数を使用できます。HLL_precision のデフォルト値は17で、これは実質的に96 KiBのスペース(2^17セル、各6ビット)を占めます。
  • X: 可変数のパラメータ。パラメータは TupleArrayDateDateTimeString または数値型です。

戻り値

実装の詳細

uniqCombined 関数は次のように機能します:

  • 集約内のすべてのパラメータのハッシュ(Stringの場合は64ビットハッシュ、それ以外は32ビット)を計算し、それを計算に使用します。
  • 配列、ハッシュテーブル、エラー補正テーブルを使用したHyperLogLogの3つのアルゴリズムの組み合わせを利用します。
    • 少数の異なる要素には配列が使用されます。
    • 集合サイズが大きい場合にはハッシュテーブルが使用されます。
    • さらに多くの要素に対しては、固定量のメモリを占有するHyperLogLogが使用されます。
  • 結果を決定論的に提供します(クエリ処理順序に依存しません)。
注記

String型以外では32ビットハッシュを使用するため、UINT_MAXを大きく超えるカーディナリティの場合、結果は非常に高い誤差を持ちます(数十億の異なる値を超えると誤差が急上昇します)。したがって、この場合は uniqCombined64 を使用するべきです。

uniq 関数と比べて、uniqCombined 関数は:

  • メモリの消費が数倍少ないです。
  • 精度が数倍高いです。
  • 通常、パフォーマンスがわずかに低下します。一部のシナリオでは、ネットワーク上で大量の集約状態を伝送する分散クエリのように、uniqCombineduniq よりも優れた性能を発揮します。

クエリ:

結果:

より大きな入力に対する uniqCombineduniqCombined64 の違いの例については、uniqCombined64 の例のセクションを参照してください。

関連項目