Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL analytics endpoint in Microsoft Fabric
Warehouse em Microsoft Fabric
SQL database in Microsoft Fabric
Essa função retorna o número aproximado de valores não nulos exclusivos em um grupo.
Convenções de sintaxe de Transact-SQL
Sintaxe
APPROX_COUNT_DISTINCT ( expression )
Argumentos
expressão
Uma expressão de qualquer tipo, exceto image, sql_variant, ntext ou text.
Tipos de retorno
bigint
Comentários
APPROX_COUNT_DISTINCT( expression ) avalia uma expressão de cada linha em um grupo e retorna o número aproximado de valores não nulos exclusivos em um grupo. Essa função foi projetada para fornecer agregações em grandes conjuntos de dados, nos quais a capacidade de resposta é mais importante do que a precisão absoluta.
APPROX_COUNT_DISTINCT foi projetado para uso em cenários de big data e é otimizado para as seguintes condições:
- Acesso de conjuntos de dados com milhões de linhas ou mais e
- Agregação de uma coluna ou colunas com muitos valores distintos
A implementação da função garante uma taxa de erro de até %2 em uma probabilidade de 97%.
APPROX_COUNT_DISTINCT requer menos memória do que uma operação COUNT DISTINCT exaustiva. Dado o volume de memória menor, APPROX_COUNT_DISTINCT apresenta menos probabilidade de despejo de memória em disco comparado com uma operação COUNT DISTINCT precisa. Saiba mais sobre o algoritmo usado para conseguir isso em HyperLogLog.
Observação
Com as cadeias de caracteres confidenciais de ordenação, APPROX_COUNT_DISTINCT usa uma correspondência binária e fornece resultados que teriam sido gerados na presença de ordenações BIN, não BIN2.
Exemplos
a. Usar APPROX_COUNT_DISTINCT
Este exemplo retorna o número aproximado de chaves de ordem diferentes da tabela ordens.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Veja a seguir o conjunto de resultados.
Approx_Distinct_OrderKey
------------------------
15164704
B. Usar APPROX_COUNT_DISTINCT com GROUP BY
Este exemplo retorna o número aproximado de chaves de ordem diferentes por status da ordem da tabela ordens.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Veja a seguir o conjunto de resultados.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036