Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:APPROX_COUNT_DISTINCT

Son Güncelleme:Oct 04, 2026

APPROX_COUNT_DISTINCT işlevi, bir sütundaki farklı değerlerin yaklaşık sayısını döndürür. Doğruluğun küçük ve yapılandırılabilir bir bölümünden fedakarlık ederek toplam düğümündeki durum ek yükünü önemli ölçüde azaltır. Bu nedenle, kesin sayımın gerekli olmadığı benzersiz ziyaretçi (UV) sayımı gibi yüksek kardinaliteli kullanım durumları için son derece uygundur.

Sürüm gereksinimi: Ververica Runtime (VVR) 3.0.0 veya üzeri.

Ne zaman kullanılır?

Aşağıdaki iki koşulun da sağlandığı durumlarda COUNT DISTINCT yerine APPROX_COUNT_DISTINCT kullanın:

  • Sütun çok sayıda farklı anahtar içeriyorsa (örneğin kullanıcı kimlikleri, oturum belirteçleri, URL'ler). Düşük kardinaliteli sütunlar için bu işlev anlamlı bir performans avantajı sağlamaz.

  • Giriş akışı geri çekme (retract) mesajları içermiyorsa.

Bu koşullardan herhangi biri karşılanmıyorsa bunun yerine COUNT DISTINCT kullanın.

Nasıl çalışır?

COUNT DISTINCT kesin bir sonuç üretmek için her farklı anahtarı durum verilerinde saklamak zorundadır. Yüksek kardinaliteli sütunlarda bu durum önemli okuma/yazma ek yüküne neden olur ve bir performans darboğazı haline gelir.

APPROX_COUNT_DISTINCT her anahtarı saklamadan farklı sayımı tahmin eder. Bu yaklaşım durum darboğazını ortadan kaldırır ve toplam düğümünde miniBatch ile yerel-genel optimizasyonların kullanılmasına olanak tanır.

accuracy parametresi hesaplama doğruluğunu kontrol eder. Daha büyük bir değer daha yüksek doğruluk anlamına gelir; bu da durum ek yükünü artırır ve COUNT DISTINCT üzerindeki performans avantajını zayıflatır.

Söz dizimi

APPROX_COUNT_DISTINCT(col [, accuracy])

Parametreler

Parametre Tür Zorunlu Açıklama
col Tüm veri türleri Evet Farklı değerlerinin sayılacağı sütun.
accuracy FLOAT Hayır Hesaplama doğruluğu. Geçerli değerler: (0.0, 1.0). Varsayılan: 0.99. Daha yüksek bir değer, daha yüksek durum ek yükü pahasına daha yüksek doğruluk sağlar; bu da COUNT DISTINCT üzerindeki performans avantajını azaltır.

Örnek

Aşağıdaki örnek, varsayılan doğruluk (0.99) ve daha düşük bir doğruluk (0.9) düzeyindeki sonuçları karşılaştırır.

Giriş tablosu T1

a (VARCHAR) b (BIGINT)
Hi 1
Hi 2
Hi 3
Hi 4
Hi 5
Hi 6
Hello 1
Hello 2
Hello 3
Hello 4

Sorgu

SELECT
  a,
  APPROX_COUNT_DISTINCT(b) AS b,
  APPROX_COUNT_DISTINCT(b, 0.9) AS c
FROM T1
GROUP BY a;

Sonuçlar

a (VARCHAR) b (BIGINT) c (BIGINT)
Hi 6 6
Hello 4 4

b sütunu 0.99 varsayılan doğruluğunu kullanır; c sütunu ise 0.9 değerini kullanır.