APPROX_COUNT_DISTINCT (Transact-SQL)
Si applica a: SQL Server 2019 (15.x) database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics in Microsoft Fabric Warehouse in Microsoft Fabric
Questa funzione restituisce il numero approssimativo di valori univoci non Null in un gruppo.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
APPROX_COUNT_DISTINCT ( expression )
Argomenti
expression
Espressione di qualsiasi tipo, a eccezione di image, sql_variant, ntext o text.
Tipi restituiti
bigint
Osservazioni:
APPROX_COUNT_DISTINCT( expression )
valuta un'espressione per ogni riga in un gruppo e restituisce il numero approssimativo di valori univoci non Null in un gruppo. Questa funzione è progettata per fornire aggregazioni su set di dati di grandi dimensioni in cui la velocità di risposta è più importante della precisione assoluta.
APPROX_COUNT_DISTINCT
è progettata per l'uso in scenari Big Data ed è ottimizzata per le condizioni seguenti:
- Accesso a set di dati con più di milioni di righe e
- Aggregazione di una colonna o di più colonne con molti valori distinti
L'implementazione della funzione garantisce un tasso di errore fino al 2% con una probabilità del 97%.
APPROX_COUNT_DISTINCT
richiede meno memoria rispetto a un'operazione COUNT DISTINCT completa. Dato il footprint di memoria più piccolo, è meno probabile che APPROX_COUNT_DISTINCT
causi lo spill della memoria su disco rispetto a un'operazione COUNT DISTINCT precisa. Per altre informazioni sull'algoritmo usato per ottenere questo risultato, vedere HyperLogLog.
Nota
Con le stringhe sensibili alle regole di confronto, APPROX_COUNT_DISTINCT usa una corrispondenza binaria e fornisce i risultati che verrebbero generati in presenza di regole di confronto BIN e non BIN2.
Esempi
R. Uso di APPROX_COUNT_DISTINCT
Questo esempio restituisce il numero approssimativo di chiavi di ordine diverse dalla tabella orders.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Il set di risultati è il seguente.
Approx_Distinct_OrderKey
------------------------
15164704
B. Uso di APPROX_COUNT_DISTINCT con GROUP BY
Questo esempio restituisce il numero approssimativo di chiavi di ordine diverse in base allo stato dell'ordine dalla tabella orders.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Il set di risultati è il seguente.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036
Vedi anche
Funzioni di aggregazione (Transact-SQL)
COUNT (Transact-SQL)