Dies ist eine SQL-Version des Dashboard-Berichts für DAU/MAU.
Dieser Bericht bietet eine detaillierte Analyse des Verhältnisses von täglich aktiven Benutzern (DAU) zu monatlich aktiven Benutzern (MAU) über einen bestimmten Zeitraum. Das DAU/MAU-Verhältnis ist ein wichtiger Leistungsindikator (KPI), der das Benutzerengagement misst, indem die Anzahl der eindeutigen aktiven Benutzer pro Tag mit der Anzahl der eindeutigen aktiven Benutzer über einen Zeitraum von 30 Tagen verglichen wird.
-- [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
SQL-Abfrageerklärung
Die SQL-Abfrage verwendet Common Table Expressions (CTEs), um zwei Datensätze zu erstellen: einen für DAU und einen für MAU. Anschließend werden diese Datensätze kombiniert, um das DAU/MAU-Verhältnis für jeden Tag innerhalb des angegebenen Zeitraums zu berechnen.
Parameter
Die Abfrage akzeptiert zwei Parameter, :start_date und :end_date, mit denen der Benutzer den Zeitraum für den Bericht festlegen kann. Beide Datumsparameter akzeptieren das Datumsformat JJJJ-MM-TT.
CTEs
- date_series: Die CTE
date_seriesgeneriert eine Reihe von Daten vom:start_datebis zum:end_datemit einem Intervall von einem Tag zwischen jedem Datum. Diese Reihe wird verwendet, um sicherzustellen, dass der Bericht jeden Tag innerhalb des angegebenen Bereichs enthält, auch wenn an einigen Tagen keine Benutzeraktivität stattfindet. - DAU: Die CTE
DAUberechnet die Anzahl der eindeutigen Benutzer, die die Website an jedem Tag besucht haben (dau_count). Dies geschieht durch Verknüpfung der Tabelleuser_visitsmit der CTEdate_seriesunter der Bedingung, dass das Besuchsdatum mit dem Datum in der Reihe übereinstimmt. Das Ergebnis wird nach Datum gruppiert, um die Anzahl der eindeutigen Benutzer für jeden Tag zu ermitteln. - MAU: Die CTE
MAUberechnet die Anzahl der eindeutigen Benutzer, die die Website innerhalb der 30 Tage vor jedem Datum in derdate_seriesbesucht haben. Dies geschieht durch Verknüpfung der Tabelleuser_visitsmit der CTEdate_series, wobei das Besuchsdatum zwischen 30 Tagen vor und bis einschließlich des Datums in der Reihe liegt. Das Ergebnis wird nach Datum gruppiert, um die Anzahl der eindeutigen Benutzer für jeden 30-Tage-Zeitraum vor jedem Datum zu ermitteln.
Finale Auswahl
Der letzte Teil der Abfrage berechnet das DAU/MAU-Verhältnis für jeden Tag, indem die DAU-Anzahl durch die MAU-Anzahl geteilt und mit 100 multipliziert wird, um einen Prozentsatz zu erhalten. Außerdem werden die Anzahlen von DAU und MAU als Referenz ausgewählt. Die Funktion NULLIF wird verwendet, um eine Division durch Null zu vermeiden, die auftreten würde, wenn an einem bestimmten Tag keine MAU vorhanden sind. Das Ergebnis wird nach Datum sortiert, um eine chronologische Ansicht des Benutzerengagements zu erhalten.
Beispielergebnisse
| Tag | 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 |
| … | … | … | … |