DAU, WAU, MAU
Bạn sẽ học được
- Định nghĩa đúng DAU, WAU, MAU.
- Vì sao DAU/MAU là chỉ số quan trọng.
- Ảnh hưởng của định nghĩa "hoạt động" lên con số.
- Đọc xu hướng người dùng có mùa vụ.
- Tránh các lỗi so sánh phổ biến.
Khái niệm cốt lõi
Các chỉ số người dùng hoạt động:
| Chỉ số | Định nghĩa | Trả lời |
|---|---|---|
| DAU | Số người dùng khác nhau hoạt động trong một ngày | Hôm nay có bao nhiêu người? |
| WAU | Số người dùng khác nhau trong 7 ngày | Tuần này có bao nhiêu người? |
| MAU | Số người dùng khác nhau trong 30 ngày | Tháng này có bao nhiêu người? |
| DAU/MAU | DAU trung bình / MAU | Người dùng quay lại thường xuyên không? |
Từ khóa là khác nhau. Cộng số lần hoạt động cho ra "lượt", không phải "người". Trộn hai khái niệm này là lỗi phổ biến nhất khi báo cáo.
Tính DAU
SELECT
date_trunc('day', occurred_at)::date AS ngay,
COUNT(DISTINCT user_id) AS dau
FROM events
WHERE occurred_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;COUNT(DISTINCT user_id) là bắt buộc. COUNT(*) đếm sự kiện, không đếm người.
Một người mở 50 lần trong ngày vẫn chỉ là 1 DAU. Đây là hành vi đúng: DAU đo độ phủ, không đo cường độ.
Định nghĩa "hoạt động"
DAU phụ thuộc hoàn toàn vào việc bạn coi sự kiện nào là hoạt động:
- Mọi sự kiện (kể cả
app_openeddo hệ thống tự bắn). - Chỉ sự kiện có chủ đích (
product_viewed,search_performed). - Chỉ sự kiện giá trị (
order_created).
Ba định nghĩa cho ba con số rất khác nhau. Định nghĩa rộng nhất thường bị thổi phồng bởi lần mở ứng dụng tự động. Chốt định nghĩa, ghi vào tài liệu chỉ số, và giữ nguyên khi so sánh theo thời gian.
Ví dụ định nghĩa có kỷ luật:
WITH hoat_dong AS (
SELECT DISTINCT user_id, date_trunc('day', occurred_at)::date AS ngay
FROM events
WHERE event_name IN (
'product_viewed', 'search_performed', 'cart_item_added',
'checkout_started', 'checkout_completed'
)
)
SELECT ngay, COUNT(*) AS dau
FROM hoat_dong
GROUP BY 1
ORDER BY 1;WAU, MAU và cửa sổ trượt
WAU tính trên cửa sổ 7 ngày trượt, không phải tuần lịch:
SELECT COUNT(DISTINCT user_id) AS wau
FROM events
WHERE occurred_at >= now() - INTERVAL '7 days';Khác biệt quan trọng:
- Cửa sổ trượt: mỗi ngày có một con số WAU, so sánh được giữa các ngày.
- Tuần lịch: chỉ có một con số mỗi tuần, nhưng dễ hiểu với báo cáo điều hành.
Dashboard nên ghi rõ dùng loại nào. Trộn hai loại trong cùng biểu đồ tạo ra bậc thang giả.
DAU/MAU
Tỷ lệ này đo mức độ thường xuyên quay lại:
DAU/MAU = DAU trung bình trong 30 ngày / MAUCách đọc:
| Giá trị | Ý nghĩa gần đúng |
|---|---|
| Dưới 10% | Dùng thưa, vài lần một tháng |
| 10–20% | Dùng hằng tuần |
| 20–50% | Dùng vài lần mỗi tuần |
| Trên 50% | Dùng hằng ngày |
Ngưỡng phụ thuộc loại sản phẩm: mạng xã hội có thể trên 50%; ứng dụng mua nhà có thể dưới 5% mà vẫn khoẻ. So sánh với chính mình theo thời gian, không so với sản phẩm khác loại.
Mùa vụ và ngày đặc biệt
DAU biến động theo thứ trong tuần. So sánh thứ Hai với Chủ nhật sẽ thấy "giảm 30%" dù không có gì xấu.
Cách đọc đúng:
- So cùng thứ trong tuần.
- Hoặc dùng trung bình động 7 ngày.
- Đánh dấu ngày lễ, khuyến mãi trên biểu đồ.
SELECT
ngay,
dau,
AVG(dau) OVER (ORDER BY ngay ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS dau_tb7
FROM (
SELECT date_trunc('day', occurred_at)::date AS ngay,
COUNT(DISTINCT user_id) AS dau
FROM events
GROUP BY 1
) t
ORDER BY ngay;Trung bình động 7 ngày làm mượt biến động thứ trong tuần và cho thấy xu hướng thật.
Lỗi so sánh
| Cách so sánh | Vấn đề | Cách đúng |
|---|---|---|
| Hôm nay với hôm qua | Khác thứ trong tuần | So cùng thứ tuần trước |
| Tuần này với tuần trước | Tuần lễ khác nhau | So cùng số ngày đã qua |
| Tháng 30 ngày với tháng 31 ngày | Khác độ dài | So trung bình ngày hoặc cùng số ngày |
| MAU tháng này với MAU tháng trước giữa tháng | Tháng chưa kết thúc | So cùng kỳ hoặc chờ hết tháng |
Tháng chưa kết thúc là cái bẫy lớn: ngày 10 so MAU tháng này với MAU tháng trước luôn giảm, vì tháng này mới có 10 ngày dữ liệu.
Thực hành
- Viết truy vấn DAU 30 ngày.
- Viết WAU cửa sổ trượt cho hôm nay.
- Chọn định nghĩa "hoạt động" cho một sản phẩm bạn biết và giải thích.
- Tính DAU/MAU gần đúng từ hai con số.
- Thêm trung bình động 7 ngày vào truy vấn DAU.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cách sửa |
|---|---|---|
| DAU cao bất thường | Đếm sự kiện, không đếm người | COUNT(DISTINCT user_id) |
| DAU tăng vọt không thật | Sự kiện hệ thống tự bắn | Chốt danh sách sự kiện hợp lệ |
| Giảm mỗi Chủ nhật | Mùa vụ tuần | So cùng thứ, dùng TB 7 ngày |
| MAU cuối tháng luôn cao | Cửa sổ chưa đủ | So cùng kỳ hoặc chờ hết tháng |
| Số liệu đổi khi đổi định nghĩa | Không ghi tài liệu | Ghi định nghĩa vào metric spec |
| WAU lệch giữa hai báo cáo | Trượt vs tuần lịch | Chốt một cách tính |
Tóm tắt
- DAU/WAU/MAU đếm người khác nhau, không đếm lượt.
- Định nghĩa "hoạt động" quyết định con số; phải chốt và ghi lại.
- WAU/MAU cửa sổ trượt khác tuần/tháng lịch.
- DAU/MAU đo mức quay lại; ngưỡng phụ thuộc loại sản phẩm.
- So sánh cùng thứ, cùng số ngày, và dùng trung bình động để loại mùa vụ.
Use ← → to move between lessons