カテゴリ:

集計関数 (カーディナリティ推定)、 ウィンドウ関数

HLL

HyperLogLog を使用して、入力の異なるカーディナリティの近似値を返します( HLL(col1, col2, ... )COUNT(DISTINCT col1, col2, ... ) の近似値を返します)。

HyperLogLogの詳細については、 異なる値の数の推定 をご参照ください。

エイリアス:

APPROX_COUNT_DISTINCT

こちらもご参照ください:

HLL_ACCUMULATEHLL_COMBINEHLL_ESTIMATE

構文

集計関数

HLL( [ DISTINCT ] <expr1> [ , ... ] )

HLL(*)

ウィンドウ関数

HLL( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )

HLL(*) OVER ( [ PARTITION BY <expr2> ] )

引数

式1

これは、個別の値の数を知るときの式です。

式2

これは、行をパーティションにグループ化するために使用されるオプションの式です。

戻り値

返される値のデータ型は INTEGER です。

使用上の注意

  • DISTINCT 引数として含めることができますが、効果はありません。

  • NULL 値と集計関数の詳細については、 集計関数と NULL 値 をご参照ください。

  • ウィンドウ関数として使用する場合:

    • この関数は次をサポートしていません。

      • OVER()句のORDER BY サブ句。

      • ウィンドウフレーム。

この例は、 HLL とそのエイリアス APPROX_COUNT_DISTINCTの使用方法を示しています。この例では、 COUNT(DISTINCT i)APPROX_COUNT_DISTINCT(i) の両方を呼び出して、結果が常に完全に一致するとは限らないことを強調しています。

SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i)
  FROM sequence_demo;

出力:

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 |                     1030 |   1030 |
+----------+-------------------+--------------------------+--------+