Bagikan melalui


APPROX_COUNT_DISTINCT (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2019 (15.x) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric

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

Konvensi sintaks transact-SQL

Sintaks

APPROX_COUNT_DISTINCT ( expression )   

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 set hasilnya.

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 set hasilnya.

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

Lihat juga

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