APPROX_COUNT_DISTINCT (Transact-SQL)
Se aplica a: Sql Server 2019 (15.x) Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics de Azure Synapse Analytics en Microsoft Fabric Warehouse 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 )
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;
Este es el conjunto de resultados.
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;
Este es el conjunto de resultados.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036