APPROX_COUNT_DISTINCT (Transact-SQL)APPROX_COUNT_DISTINCT (Transact-SQL)

APLICA-SE A: nãoSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: noSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Essa função retorna o número aproximado de valores não nulos exclusivos em um grupo.This function returns the approximate number of unique non-null values in a group.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

Observação

APPROX_COUNT_DISTINCT é um recurso em versão prévia pública.APPROX_COUNT_DISTINCT is a public preview feature.

SintaxeSyntax

-- Syntax for Azure SQL Database, Azure SQL Data Warehouse and Parallel Data Warehouse  

APPROX_COUNT_DISTINCT ( expression )   

ArgumentosArguments

expressãoexpression
Uma expressão de qualquer tipo, exceto image, sql_variant, ntext ou text.An expression of any type, except image, sql_variant, ntext, or text.

Tipos de retornoReturn types

bigintbigint

RemarksRemarks

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.APPROX_COUNT_DISTINCT( expression ) evaluates an expression for each row in a group, and returns the approximate number of unique non-null values in a group. 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.This function is designed to provide aggregations across large data sets where responsiveness is more critical than absolute precision.

APPROX_COUNT_DISTINCT foi projetado para uso em cenários de big data e é otimizado para as seguintes condições:APPROX_COUNT_DISTINCT is designed for use in big data scenarios and is optimized for the following conditions:

  • Acesso de conjuntos de dados com milhões de linhas ou mais eAccess of data sets that are millions of rows or higher and
  • Agregação de uma coluna ou colunas com muitos valores distintosAggregation of a column or columns that have many distinct values

A implementação da função garante uma taxa de erro de até %2 em uma probabilidade de 97%.The function implementation guarantees up to a 2% error rate within a 97% probability.

APPROX_COUNT_DISTINCT requer menos memória do que uma operação COUNT DISTINCT exaustiva.APPROX_COUNT_DISTINCT requires less memory than an exhaustive COUNT DISTINCT operation. 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.Given the smaller memory footprint, APPROX_COUNT_DISTINCT is less likely to spill memory to disk compared to a precise COUNT DISTINCT operation. Saiba mais sobre o algoritmo usado para conseguir isso em HyperLogLog.To learn more about the algorithm used to achieve this, see HyperLogLog.

Observação

Com cadeias de caracteres confidenciais de ordenação, a versão prévia pública do APPROX_COUNT_DISTINCT usa uma correspondência binária e gera resultados que teriam sido gerados na presença de ordenações BIN, e não de BIN2.With collation sensitive strings, the Public Preview version of APPROX_COUNT_DISTINCT uses a binary match and provides results that would have been generated in the presence of BIN collations and not BIN2.

ExemplosExamples

A.A. Usar APPROX_COUNT_DISTINCTUsing APPROX_COUNT_DISTINCT

Este exemplo retorna o número aproximado de chaves de ordem diferentes da tabela ordens.This example returns the approximate number of different order keys from the orders table.

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

Aqui está o conjunto de resultados.Here is the result set.

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

B.B. Usar APPROX_COUNT_DISTINCT com GROUP BYUsing APPROX_COUNT_DISTINCT with GROUP BY

Este exemplo retorna o número aproximado de chaves de ordem diferentes por status da ordem da tabela ordens.This example returns the approximate number of different order keys by order status from the orders table.

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

Aqui está o conjunto de resultados.Here is the result set.

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

Confira tambémSee also

Funções de agregação (Transact-SQL)Aggregate Functions (Transact-SQL)
COUNT (Transact-SQL)COUNT (Transact-SQL)