# Dashboard-Bericht - DAU/MAU

**URL:** <https://meta.discourse.org/t/dashboard-report-dau-mau/289383>\
**Category:** Data & reporting\
**Tags:** sql-query, dashboard-reports, dashboard-sql\
**Created:** [20. Dezember 2023 um 22:44 UTC](https://meta.discourse.org/t/dashboard-report-dau-mau/289383 "2023-12-20T22:44:15Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)\
**Post date:** [20. Dezember 2023 um 22:44 UTC](https://meta.discourse.org/t/dashboard-report-dau-mau/289383/1 "2023-12-20T22:44:16Z")

</div>

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.

```sql
-- [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_series` generiert eine Reihe von Daten vom `:start_date` bis zum `:end_date` mit 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 `DAU` berechnet die Anzahl der eindeutigen Benutzer, die die Website an jedem Tag besucht haben (`dau_count`). Dies geschieht durch Verknüpfung der Tabelle `user_visits` mit der CTE `date_series` unter 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 `MAU` berechnet die Anzahl der eindeutigen Benutzer, die die Website innerhalb der 30 Tage vor jedem Datum in der `date_series` besucht haben. Dies geschieht durch Verknüpfung der Tabelle `user_visits` mit der CTE `date_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 |
| … | … | … | … |

---

_[View the full topic](https://meta.discourse.org/t/dashboard-report-dau-mau/289383)._
