ClickHouse/docs/ja/sql-reference/aggregate-functions/reference/uniqcombined64.md
2024-11-18 11:58:58 +09:00

3.7 KiB
Raw Blame History

slug sidebar_position
/ja/sql-reference/aggregate-functions/reference/uniqcombined64 206

uniqCombined64

異なる引数値の概算数を計算します。これは、すべてのデータ型に対して64ビットハッシュを使用する点を除けば、uniqCombinedと同じです。

uniqCombined64(HLL_precision)(x[, ...])

パラメータ

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

返される値

実装の詳細

uniqCombined64関数は以下のように動作します:

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

:::note すべての型に対して64ビットハッシュを使用するため、uniqCombinedが非String型に対して32ビットハッシュを使用している場合のように、UINT_MAXを大幅に超えるカーディナリティに対して非常に高い誤差が発生することはありません。 :::

uniq関数と比較して、uniqCombined64関数は:

  • 数倍少ないメモリを消費します。
  • 数倍高い精度で計算します。

以下の例では、uniqCombined641e10の異なる数値に対して実行され、異なる引数値の数に非常に近い概算を返します。

クエリ:

SELECT uniqCombined64(number) FROM numbers(1e10);

結果:

┌─uniqCombined64(number)─┐
│             9998568925 │ -- 10.00 billion
└────────────────────────┘

比較すると、uniqCombined関数はこのサイズの入力に対してかなり低い精度の概算を返します。

クエリ:

SELECT uniqCombined(number) FROM numbers(1e10);

結果:

┌─uniqCombined(number)─┐
│           5545308725 │ -- 5.55 billion
└──────────────────────┘

関連項目