APPROX_COUNT_DISTINCT (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL di Microsoft FabricWarehouse di Microsoft Fabric

Fungsi ini mengembalikan perkiraan jumlah nilai non-null unik dalam grup.

Konvensi sintaks transact-SQL

Sintaksis

APPROX_COUNT_DISTINCT ( expression )   

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

expression
Ekspresi jenis apa pun, kecuali gambar, sql_variant, ntext, atau teks.

Jenis yang dikembalikan

bigint

Keterangan

APPROX_COUNT_DISTINCT( expression ) mengevaluasi ekspresi untuk setiap baris dalam grup, dan mengembalikan perkiraan jumlah nilai non-null unik dalam grup. Fungsi ini dirancang untuk memberikan agregasi di seluruh himpunan data besar di mana respons lebih penting daripada presisi absolut.

APPROX_COUNT_DISTINCT dirancang untuk digunakan dalam skenario big data dan dioptimalkan untuk kondisi berikut:

  • Akses himpunan data yang jutaan baris atau lebih tinggi dan
  • Agregasi kolom atau kolom yang memiliki banyak nilai berbeda

Implementasi fungsi menjamin tingkat kesalahan hingga 2% dalam probabilitas 97%.

APPROX_COUNT_DISTINCT membutuhkan lebih sedikit memori daripada operasi COUNT DISTINCT yang lengkap. Mengingat jejak memori yang lebih kecil, APPROX_COUNT_DISTINCT kemungkinan kecil untuk meluapkan memori ke disk dibandingkan dengan operasi COUNT DISTINCT yang tepat. Untuk mempelajari selengkapnya tentang algoritma yang digunakan untuk mencapai hal ini, lihat HyperLogLog.

Catatan

Dengan string sensitif kolaborasi, APPROX_COUNT_DISTINCT menggunakan kecocokan biner dan memberikan hasil yang akan dihasilkan di hadapan kolaborasi BIN dan bukan BIN2.

Contoh

J. Menggunakan APPROX_COUNT_DISTINCT

Contoh ini mengembalikan perkiraan jumlah kunci pesanan yang berbeda dari tabel pesanan.

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

Berikut adalah hasil yang ditetapkan.

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

B. Menggunakan APPROX_COUNT_DISTINCT dengan GROUP BY

Contoh ini mengembalikan perkiraan jumlah kunci pesanan yang berbeda berdasarkan status pesanan dari tabel pesanan.

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

Berikut adalah hasil yang ditetapkan.

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

Baca juga

Fungsi Agregat (T-SQL)
COUNT (Transact-SQL)