Ürün analitiğinin temel metrikleri
| Metrik | Tanım |
|---|---|
| DAU (daily active users) | Bir günde en az bir olay yapan tekil kullanıcı sayısı |
| WAU / MAU | Haftalık / aylık tekil aktif kullanıcı |
| Yapışkanlık (stickiness) | Ortalama DAU ÷ MAU. Kullanıcılar ayın kaçta kaçında geri geliyor? |
| Yeni kullanıcı | İlk olayı o dönemde olan kullanıcı |
Hepsinin anahtarı COUNT(DISTINCT user_id)'dir: aynı kullanıcı bir günde 10 olay yapsa da bir kez sayılır.
SELECT DATE(event_time) AS gun,
COUNT(DISTINCT user_id) AS dau,
COUNT(*) AS olay
FROM web_events
GROUP BY DATE(event_time)
ORDER BY gun
LIMIT 7;
Yapışkanlık
Önce günlük DAU'ları, sonra aylık MAU'yu bulup birleştiririz. %20 üzeri yapışkanlık, kullanıcıların ayda ortalama altı günden fazla geri geldiği anlamına gelir.
Derinleş: Aktifliği tanımlamak ve yapışkanlığı doğru bölmek
DAU, WAU ve MAU'nun hepsi tek bir kelimeye dayanır: aktif. Uygulamayı açmak mı aktiflik, bir ürüne bakmak mı, satın almak mı? Bir haber sitesi için “sayfa açtı” yeterli olabilir. Bir e-ticaret şirketi ise genellikle “anlamlı olay” (ürün görüntüleme, sepete ekleme) ister. Tanımı genişletmek sayıları şişirir ama kararları iyileştirmez. Tanımı yaz ve her raporda aynı tanımı kullan.
Yapışkanlıkta payda
Yapışkanlık = ortalama DAU ÷ MAU. Ortalama DAU'yu hesaplarken iki hata yapılır:
- Olaysız günleri atlamak: GROUP BY yalnızca olay olan günleri döndürür. Ortalama DAU'nun paydası ayın takvim günü olmalıdır, olaylı gün değil. Aksi halde sessiz günler ortalamayı yükseltir.
- Eksik ay:
web_eventsverisi 29 Kasım'da bitiyor. Kasım'ın MAU'su 30 günlük değil 29 günlük bir pencereden geliyor. Ekim'le kıyaslarken bunu not et ya da aynı gün sayısını karşılaştır.
WITH g AS (
SELECT strftime('%Y-%m', event_time) AS ay, DATE(event_time) AS gun,
COUNT(DISTINCT user_id) AS dau
FROM web_events
GROUP BY strftime('%Y-%m', event_time), DATE(event_time)
),
m AS (
SELECT strftime('%Y-%m', event_time) AS ay, COUNT(DISTINCT user_id) AS mau
FROM web_events
GROUP BY strftime('%Y-%m', event_time)
)
SELECT m.ay, m.mau, COUNT(*) AS olayli_gun,
ROUND(1.0 * SUM(g.dau) / COUNT(*), 1) AS ort_dau,
ROUND(100.0 * SUM(g.dau) / COUNT(*) / m.mau, 1) AS yapiskanlik
FROM m JOIN g ON g.ay = m.ay
GROUP BY m.ay, m.mau
ORDER BY m.ay;
Ekim'de 296 kişi aktif, ortalama DAU 14,6, yapışkanlık %4,9. Bu düşük bir değerdir. Sebebini aktif gün dağılımı gösterir: 600 kullanıcının 403'ü yalnızca bir gün görünmüş, en sık gelenler de 5 gün. Veri, kampanyayla gelen ve az geri dönen ziyaretçilerin hunisine benziyor. Burada yapışkanlıktan çok edinme ve dönüşüm metriklerine bakmak gerekir.
WITH k AS ( SELECT user_id, COUNT(DISTINCT DATE(event_time)) AS aktif_gun FROM web_events GROUP BY user_id ) SELECT aktif_gun, COUNT(*) AS kullanici FROM k GROUP BY aktif_gun ORDER BY aktif_gun;
| Yapışkanlık | Yorum |
|---|---|
| %5'in altı | Tek seferlik kullanım; ürün alışkanlık yaratmıyor |
| %10–20 | Haftada bir–iki gün dönen kullanıcılar |
| %50 üzeri | Günlük alışkanlık (mesajlaşma, sosyal medya) |