APPROX_COUNT_DISTINCT¶
HyperLogLog を使用して、入力の異なるカーディナリティの近似値を返します(つまり、 HLL(col1, col2, ... )
は COUNT(DISTINCT col1, col2, ... )
の近似値を返します)。
HyperLogLog の詳細については、 異なる値の数の推定 をご参照ください。
- エイリアス:
HLL。
- こちらもご参照ください:
構文¶
集計関数
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] )
APPROX_COUNT_DISTINCT(*)
ウィンドウ関数
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )
APPROX_COUNT_DISTINCT(*) OVER ( [ PARTITION BY <expr2> ] )
引数¶
expr1
これは、個別の値の数を知るときの式です。
expr2
これは、行をパーティションにグループ化するために使用されるオプションの式です。
戻り値¶
戻り値のデータ型はINTEGERです。
使用上の注意¶
計算は概算ですが、確定的です。この関数が同じ入力データで呼び出された場合、この関数は同じ結果を返します。
NULL 値と集計関数の詳細については、 集計関数と NULL 値 をご参照ください。
ウィンドウ関数として使用する場合、
この関数は次をサポートしていません。
OVER()句のORDER BY サブ句。
ウィンドウフレーム。
例¶
この例は、 APPROX_COUNT_DISTINCT とそのエイリアス HLLの使用方法を示しています。この例では、 COUNT(DISTINCT i)
と APPROX_COUNT_DISTINCT(i)
の両方を呼び出して、それら2つの関数の結果が常時完全に一致するとは限らないことを強調しています。
APPROX_COUNT_DISTINCT() は正確な値ではなく近似値を返すため、次のクエリの正確な出力は異なる場合があります。
SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i) FROM sequence_demo; +----------+-------------------+--------------------------+--------+ | COUNT(I) | COUNT(DISTINCT I) | APPROX_COUNT_DISTINCT(I) | HLL(I) | |----------+-------------------+--------------------------+--------| | 1024 | 1024 | 1007 | 1007 | +----------+-------------------+--------------------------+--------+