Skip to main content

uniq

導入バージョン: v1.1.0 引数の異なる値のおおよその数を計算します。 この関数は適応的なサンプリングアルゴリズムを使用します。計算状態には、最大 65536 個の要素ハッシュ値のサンプルを使用します。このアルゴリズムは非常に高精度で、CPU 上でも非常に効率的です。クエリにこの関数が複数含まれている場合でも、uniq の使用速度は他の集約関数とほぼ同等です。
この関数は、集約内のすべてのパラメータに対してハッシュを計算し、それを計算に使用します。 適応的なサンプリングアルゴリズムを使用します。 計算状態には、最大 65536 個の要素ハッシュ値のサンプルを使用します。 このアルゴリズムは非常に高精度で、CPU 上でも非常に効率的です。 クエリにこの関数が複数含まれている場合でも、uniq の使用速度は他の集約関数とほぼ同等です。サンプルが保持するのは 32 ビットハッシュであり、数十億を超える値は区別できません。そのため、 完全な 64 ビットハッシュを大幅に間引いた小さなサンプル (約 262144 値につき 1 ハッシュ、上限 16384 ハッシュ) も 併せて保持し、値がおよそ 20 億に達した時点で推定にはこちらが使われるようになります。これにより、 数千億以上のカーディナリティでも推定値は高精度 (誤差約 1% 以内) に保たれます。26.8 より前のサーバーでは、 このような場合に不正な値が返されていました (issue #6078) 。それらのサーバーで書き込まれたステートには 64 ビットサンプルが含まれないため、 それらとマージした場合、マージ元の値については 32 ビットの精度しか保持されません。
ほぼすべての場面で、他のバリアントではなくこの関数を使用することを推奨します。
構文
引数 戻り値 異なる値のおおよその個数を表す UInt64 型の数値を返します。UInt64 例 使用例
Query
Response
複数の引数
Query
Response
関連項目