Ana içeriğe geç
Kesit SQL
Orta · Veri Analisti

Aktif kullanıcı metrikleri: DAU, MAU ve yapışkanlık

Günlük/aylık tekil kullanıcılar, stickiness ve yeni kullanıcılar.

Uygulamada aç, 5 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Ürün analitiğinin temel metrikleri

MetrikTanım
DAU (daily active users)Bir günde en az bir olay yapan tekil kullanıcı sayısı
WAU / MAUHaftalı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;
DAU'lar toplanamazBir haftanın DAU'larını toplarsan WAU'yu bulamazsın; aynı kişi birden çok gün sayılır. WAU ve MAU her zaman kendi döneminde yeniden COUNT(DISTINCT) ile hesaplanır.

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:

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ıkYorum
%5'in altıTek seferlik kullanım; ürün alışkanlık yaratmıyor
%10–20Haftada bir–iki gün dönen kullanıcılar
%50 üzeriGünlük alışkanlık (mesajlaşma, sosyal medya)
Takvim ayı mı, kayan 28 gün mü?Takvim ayı MAU'su 28 ile 31 gün arasında değişen pencerelerden gelir. Ürün ekipleri bu yüzden çoğu zaman “son 28 gün” (4 tam hafta) kullanır. Hangisini seçtiysen grafiğin başlığına yaz.
Alıştırmalara geç (5)