APPROX_COUNT_DISTINCT(Transact-SQL)
적용 대상: Microsoft Fabric Warehouse의 SQL Server 2019(15.x) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL 분석 엔드포인트
이 함수는 그룹에 있는 고유한 null이 아닌 값의 대략적인 개수를 반환합니다.
구문
APPROX_COUNT_DISTINCT ( expression )
인수
expression
image, sql_variant, ntext 또는 text를 제외한 모든 형식의 식입니다.
반환 형식
bigint
설명
APPROX_COUNT_DISTINCT( expression )
는 그룹의 각 행에 대한 식을 계산하고 그룹에 있는 고유한 null이 아닌 값의 대략적인 개수를 반환합니다. 이 함수는 절대적인 정밀도보다 응답성이 더 중요한 큰 데이터 집합을 기반으로 집계를 제공하도록 디자인되었습니다.
APPROX_COUNT_DISTINCT
는 빅 데이터 시나리오에서 사용하도록 디자인되고 다음 조건에 최적화됩니다.
- 수백만 개 이상의 행을 나타내는 데이터 집합의 액세스 및
- 많은 고유 값이 포함된 열의 집계
함수 구현은 최대 97% 확률 중에 최대 2% 오류 비율을 보장합니다.
APPROX_COUNT_DISTINCT
에는 완전한 COUNT DISTINCT 작업보다 적은 메모리가 필요합니다. 메모리 사용 공간이 작을 경우 APPROX_COUNT_DISTINCT
는 정확한 COUNT DISTINCT 작업에 비해 메모리를 디스크에 분산시킬 가능성이 적습니다. 이를 수행하는 데 사용되는 알고리즘에 대한 자세한 내용은 HyperLogLog를 참조하세요.
참고
데이터 정렬이 중요한 문자열을 사용하면 APPROX_COUNT_DISTINCT는 이진 일치를 사용하고 BIN2가 아닌 BIN 데이터 정렬에서 생성된 결과를 제공합니다.
예제
A. APPROX_COUNT_DISTINCT 사용
이 예제에서는 orders 테이블에서 다양한 주문 키의 대략적인 개수를 반환합니다.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
결과 집합은 다음과 같습니다.
Approx_Distinct_OrderKey
------------------------
15164704
B. GROUP BY와 함께 APPROX_COUNT_DISTINCT 사용
이 예제에서는 orders 테이블에서 주문 상태별로 다양한 주문 키의 대략적인 개수를 반환합니다.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
결과 집합은 다음과 같습니다.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036