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
행을 파티션으로 그룹화하는 데 사용되는 선택적 식입니다.
*
NULL 값이 있는 레코드를 제외하고 총 레코드 수의 근사값을 반환합니다.
함수에 와일드카드를 전달할 때 와일드카드를 테이블의 이름이나 별칭으로 한정할 수 있습니다. 예를 들어,
mytable
이라는 테이블의 모든 열을 전달하려면 다음을 지정하십시오.(mytable.*)
필터링을 위해 ILIKE 및 EXCLUDE 키워드를 사용할 수도 있습니다.
ILIKE는 지정된 패턴과 일치하는 열 이름을 필터링합니다. 패턴은 하나만 허용됩니다. 예:
(* ILIKE 'col1%')
EXCLUDE는 지정된 열과 일치하지 않는 열 이름을 걸러냅니다. 예:
(* EXCLUDE col1) (* EXCLUDE (col1, col2))
이러한 키워드를 사용할 경우 한정자가 유효합니다. 다음 예에서는 ILIKE 키워드를 사용하여 테이블
mytable
의 패턴col1%
와 일치하는 모든 열을 필터링합니다.(mytable.* ILIKE 'col1%')
ILIKE 및 EXCLUDE 키워드는 단일 함수 호출에서 결합할 수 없습니다.
이 함수의 경우 ILIKE 및 EXCLUDE 키워드는 SELECT 목록이나 GROUP BY 절에서만 유효합니다.
ILIKE 및 EXCLUDE 키워드에 대한 자세한 내용은 SELECT 의 “매개 변수” 섹션을 참조하십시오.
반환¶
반환된 값의 데이터 타입은 INTEGER 입니다.
사용법 노트¶
계산은 근사치이지만, 결정적입니다. 동일한 입력 데이터로 이 함수를 호출하면 이 함수는 동일한 결과를 반환합니다.
NULL 값 및 집계 함수에 대한 자세한 내용은 집계 함수 및 NULL 값 을 참조하십시오.
이 함수가 윈도우 함수로 호출되는 경우에는 다음을 지원하지 않습니다.
OVER 절 내의 ORDER BY 절.
명시적 윈도우 프레임.
예¶
이 예는 APPROX_COUNT_DISTINCT 및 그 별칭 HLL을 사용하는 방법을 보여줍니다. 이 예에서는 COUNT(DISTINCT i)
및 APPROX_COUNT_DISTINCT(i)
를 둘 다 호출하여, 두 함수의 결과가 항상 정확히 일치하는 것은 아님을 강조합니다.
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 |
+----------+-------------------+--------------------------+--------+