Megosztás a következőn keresztül:


APPROX_COUNT_DISTINCT (Transact-SQL)

Vonatkozik a következőkre: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

Ez a függvény a csoportban az egyedi, nem null értékek közelítő számát adja vissza.

Transact-SQL szintaxis konvenciók

Szemantika

APPROX_COUNT_DISTINCT ( expression )   

Arguments

kifejezés
Bármilyen típusú kifejezés , kivéve a képet, sql_variant, ntextet vagy szöveget.

Visszatérési típusok

bigint

Megjegyzések

APPROX_COUNT_DISTINCT( expression ) minden sorra értékel egy kifejezést egy csoportban, és adja vissza a csoportban az egyedi, nem null értékek közelítő számát. Ez a funkció arra van tervezve, hogy aggregációkat biztosítson nagy adathalmazokon keresztül, ahol a válaszadás kritikusabb, mint abszolút pontosság.

APPROX_COUNT_DISTINCT nagy adathelyzetekre tervezték, és az alábbi feltételekre optimalizált:

  • olyan adathalmazokhoz való hozzáférés, amelyek több millió sorból állnak és
  • Egy oszlop vagy oszlopok aggregálása, amelyek sok különböző értékkel rendelkeznek

A funkció megvalósítása akár 2% hibaarányt garantál egy 97% valószínűségen belül.

APPROX_COUNT_DISTINCT kevesebb memóriát igényel, mint egy kimerítő COUNT DISTINCT művelet. Mivel kisebb memória felület APPROX_COUNT_DISTINCT , kisebb valószínűséggel terjed ki a memória lemezre, mint egy pontos COUNT DISTINCT művelet. Ha többet szeretnél megtudni az ehhez használt algoritmusról, lásd a HyperLogLog-ot.

Megjegyzés:

A kollációérzékeny láncsorok esetén APPROX_COUNT_DISTINCT bináris egyezést használ, és olyan eredményeket ad, amelyeket BIN összeállítások jelenlétében generáltak, nem pedig BIN2 esetén.

Példák

A. Használat APPROX_COUNT_DISTINCT

Ez a példa a rendelési táblából származó különböző sorrendkulcsok közelítő számát adja vissza.

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

Itt van az eredmények összessége.

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

B. Használat APPROX_COUNT_DISTINCT GROUP BY-val

Ez a példa a rendelési táblából adja vissza a különböző rendelési kulcsok közelítő számát rendelési státusz szerint.

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

Itt van az eredmények összessége.

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

Lásd még

összesítő függvények (Transact-SQL)
COUNT (Transact-SQL)