Este es un informe de panel de control en versión SQL para DAU/MAU.
Este informe proporciona un análisis detallado de la relación entre Usuarios Activos Diarios (DAU) y Usuarios Activos Mensuales (MAU) durante un rango de fechas específico. La relación DAU/MAU es un indicador clave de rendimiento (KPI) que mide la participación del usuario al comparar el número de usuarios activos únicos por día con el número de usuarios activos únicos durante un período de 30 días.
-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2024-01-01
WITH date_series AS (
SELECT generate_series(:start_date::date, :end_date::date, '1 day'::interval) AS date
),
DAU AS (
SELECT date(date) AS day, COUNT(DISTINCT user_id) AS dau_count
FROM user_visits
JOIN date_series ON date(user_visits.visited_at) = date_series.date
GROUP BY date
),
MAU AS (
SELECT date_series.date, COUNT(DISTINCT user_visits.user_id) AS mau_count
FROM user_visits
JOIN date_series ON date(user_visits.visited_at) >= date_series.date - INTERVAL '30 days'
AND date(user_visits.visited_at) <= date_series.date
GROUP BY date_series.date
)
SELECT
DAU.day,
(DAU.dau_count::FLOAT / NULLIF(MAU.mau_count, 0)) * 100 AS "DAU/MAU",
DAU.dau_count,
MAU.mau_count
FROM DAU
JOIN MAU ON DAU.day = MAU.date
ORDER BY DAU.day
Explicación de la consulta SQL
La consulta SQL utiliza Expresiones Comunes de Tabla (CTE) para crear dos conjuntos de datos: uno para DAU y otro para MAU. Luego, combina estos conjuntos de datos para calcular la relación DAU/MAU para cada día dentro del rango de fechas especificado.
Parámetros
La consulta acepta dos parámetros, :start_date y :end_date, lo que permite al usuario especificar el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fecha YYYY-MM-DD.
CTEs
- date_series: La CTE
date_seriesgenera una serie de fechas desde:start_datehasta:end_date, con un intervalo de un día entre cada fecha. Esta serie se utiliza para garantizar que el informe incluya todos los días dentro del rango especificado, incluso si no hay actividad de usuario en algunos días. - DAU: La CTE
DAUcalcula el número de usuarios únicos que visitaron el sitio cada día (dau_count). Lo hace uniendo la tablauser_visitscon la CTEdate_seriesbajo la condición de que la fecha de visita coincida con la fecha de la serie. El resultado se agrupa por fecha para obtener el recuento de usuarios únicos para cada día. - MAU: La CTE
MAUcalcula el número de usuarios únicos que visitaron el sitio dentro de los 30 días anteriores a cada fecha endate_series. Lo hace uniendo la tablauser_visitscon la CTEdate_series, donde la fecha de visita está entre 30 días antes y hasta, e incluyendo, la fecha en la serie. El resultado se agrupa por fecha para obtener el recuento de usuarios únicos para cada período de 30 días anterior a cada fecha.
Selección Final
La parte final de la consulta calcula la relación DAU/MAU para cada día dividiendo el recuento de DAU por el recuento de MAU y multiplicando por 100 para obtener un porcentaje. También selecciona los recuentos de DAU y MAU como referencia. La función NULLIF se utiliza para evitar la división por cero, que ocurriría si no hay MAU para un día determinado. El resultado se ordena por día para proporcionar una vista cronológica de la participación del usuario.
Resultados de ejemplo
| día | DAU/MAU | dau_count | mau_count |
|---|---|---|---|
| 2023-11-19 | 15.31914893617021 | 360 | 2350 |
| 2023-11-20 | 23.92223161453931 | 566 | 2366 |
| 2023-11-21 | 23.55648535564853 | 563 | 2390 |
| 2023-11-22 | 23.09929372663066 | 556 | 2407 |
| 2023-11-23 | 19.394944053046 | 468 | 2413 |
| … | … | … | … |