APPROX_COUNT_DISTINCT (Transact-SQL)

Se aplica a: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Esta función devuelve el número aproximado de valores no nulos únicos de un grupo.

Convenciones de sintaxis de Transact-SQL

Sintaxis

APPROX_COUNT_DISTINCT ( expression )   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulta la Documentación de versiones anteriores.

Argumentos

expression
Una expresión de cualquier tipo, excepto image, sql_variant, ntext o text.

Tipos de valores devueltos

bigint

Observaciones

APPROX_COUNT_DISTINCT( expression ) evalúa una expresión para cada fila de un grupo y devuelve el número aproximado de valores no nulos únicos de un grupo. Esta función está diseñada para proporcionar agregaciones de conjuntos de datos de gran tamaño en los que la capacidad de respuesta resulta más fundamental que la precisión absoluta.

APPROX_COUNT_DISTINCT está diseñado para su uso en escenarios de macrodatos y está optimizado para las condiciones siguientes:

  • Acceso de conjuntos de datos con miles de filas o más y
  • Agregación de una columna o columnas con muchos valores distintos

La implementación de la función garantiza una tasa de error de hasta 2 % dentro de una probabilidad del 97 %.

APPROX_COUNT_DISTINCT requiere menos memoria que una operación COUNT DISTINCT exhaustiva. Dada la menor superficie de memoria, es menos probable que APPROX_COUNT_DISTINCT desborde memoria en el disco en comparación con una operación COUNT DISTINCT precisa. Para más información sobre el algoritmo usado para conseguir esto, consulte HyperLogLog.

Nota

Con cadenas que distinguen la intercalación, APPROX_COUNT_DISTINCT usa una combinación binaria y proporciona resultados que se habrían generado en presencia de intercalaciones BIN y no BIN2.

Ejemplos

A. Uso de APPROX_COUNT_DISTINCT

Este ejemplo devuelve el número aproximado de claves de pedido diferentes desde la tabla de pedidos.

SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;

El conjunto de resultados es el siguiente:

Approx_Distinct_OrderKey
------------------------
15164704

B. Uso de APPROX_COUNT_DISTINCT con GROUP BY

Este ejemplo devuelve el número aproximado de claves de pedido diferentes según el estado del pedido desde la tabla de pedidos.

SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus; 

El conjunto de resultados es el siguiente:

O_OrderStatus                                                    Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F                                                                7397838
O                                                                7387803
P                                                                388036

Consulte también

Funciones de agregado (Transact-SQL)
COUNT (Transact-SQL)