我们能为您提供什么帮助?

计算每日和每月活跃用户(DAU 和 MAU)

  • 更新

概要:学习如何计算每日和每月活跃用户,以获取有关您活动的有价值见解

概览

每日活跃用户(DAU)和每月活跃用户(MAU)是理解应用参与度和整体用户行为的关键指标。它们提供了有关您的活跃用户基础的有价值见解,包括用户粘性、活动表现和随时间的增长趋势。

本文解释了如何使用两个数据锁定原始数据表中的查询来计算 DAU 和 MAU,这些表代表用户获取和重定向流量:sessions和sessions_retargeting表。

 注意

从 2025 年 2 月开始,AppsFlyer 中的活动仪表板默认显示统一(UA 和重定向)数据。您可能会注意到原始数据和仪表板数字之间存在轻微差异,原因是 批准的算法调整。

查询活跃的独立用户

要计算独立用户,请在查询中使用 advertising_id 作为主要标识符。如果 advertising_id 不可用,请用 appsflyer_id 替代。此方法仅适用于配置为 首次安装模式 的应用。

对于不使用此模式的应用,我们建议改用 count(distinct appsflyer_id)。

计算每日活跃用户(DAU)

使用以下查询计算每日独立用户的总数。

查询 DAU – 用户获取(UA)

选择指定日期的活跃 UA 用户。

WITH sessions_cleaned AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions
    WHERE app_id = 'your.app.id.here'                      -- Replace with your app ID
		    AND SUBSTR(event_time, 1, 10) = 'YYYY-MM-DD'       -- Target date                 
)

SELECT COUNT(DISTINCT user_id) AS dau_ua
FROM sessions_cleaned;

查询 DAU – 重定向

选择指定日期的活跃重定向用户。

WITH sessions_retargeting_cleaned AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions_retargeting
    WHERE app_id = 'your.app.id.here'                      -- Replace with your app ID
		    AND SUBSTR(event_time, 1, 10) = 'YYYY-MM-DD'   -- Target date                 
)
SELECT COUNT(DISTINCT user_id) AS dau_retargeting
FROM sessions_retargeting_cleaned;

查询 DAU – 统一(UA 和重定向)

选择指定日期的活跃 UA 和重定向用户。

要获得完整的活跃用户覆盖,您必须 联合 sessions 和 sessions_retargeting 表格确保字段对齐 — 通常通过 及如果 需要时,规范化架构,以便两个表具有一致的 字段名称

WITH ua_sessions AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions
    WHERE app_id = 'your.app.id.here'                 -- Replace with your app ID
      AND SUBSTR(event_time, 1, 10) = 'YYYY-MM-DD'    -- Target date           
      AND is_primary_attribution = TRUE
),

retargeting_sessions AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions_retargeting
    WHERE app_id = 'your.app.id.here'                  -- Same app
      AND SUBSTR(event_time, 1, 10) = 'YYYY-MM-DD'     -- Same date
),

all_sessions AS (
    SELECT * FROM ua_sessions
    UNION ALL
    SELECT * FROM retargeting_sessions
)

SELECT COUNT(DISTINCT user_id) AS dau_unified
FROM all_sessions;

计算月活跃用户 (MAU)

AppsFlyer 仪表板以两种方式呈现 MAU:

  1. 过去 31 天的活跃用户 – 过去 31 天内的独立活跃用户数量。
  2. 日历月 MAU – 在特定日历月内的独立活跃用户数量。

下面的查询演示了如何计算第一种类型的 MAU。要计算日历月 MAU,只需调整日期范围以匹配所需的月份。

MAU 查询 – 用户获取 (UA)

选择指定月份的活跃 UA 用户。

WITH sessions_cleaned AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions
    WHERE app_id = 'your.app.id.here'  -- Replace with your app ID
			AND DATE_DIFF('day', TRY_CAST(SUBSTR(event_time, 1, 10) AS DATE), DATE('YYYY-MM-DD')) <= 31  -- Replace with target end date 
)
SELECT COUNT(DISTINCT user_id) AS mau_ua
FROM sessions_cleaned;

MAU 查询 – 再营销

选择指定月份的活跃再营销用户。

WITH sessions_cleaned AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions_retargeting
    WHERE app_id = 'your.app.id.here'  -- Replace with your app ID
			AND DATE_DIFF('day', TRY_CAST(SUBSTR(event_time, 1, 10) AS DATE), DATE('YYYY-MM-DD')) <= 31  -- Replace with target end date 
)

SELECT COUNT(DISTINCT user_id) AS mau_retargeting
FROM sessions_cleaned;

MAU 查询 – 统一 (UA & 再营销)

选择指定月份的活跃 UA 和再营销用户。

要获得完整的活跃用户覆盖,您必须 联合 sessions 和 sessions_retargeting 表格确保字段对齐 — 通常通过 及如果 需要时,规范化架构,以便两个表具有一致的 字段名称

WITH ua_sessions AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions
    WHERE app_id = 'your.app.id.here'                        -- Replace with your app ID
      AND DATE_DIFF('day', TRY_CAST(SUBSTR(event_time, 1, 10) AS DATE), DATE('YYYY-MM-DD')) <= 31  -- Replace with target end date        
      AND is_primary_attribution = TRUE
),

retargeting_sessions AS (
    SELECT DISTINCT
        app_id,
        COALESCE(advertising_id, appsflyer_id) AS user_id
    FROM sessions_retargeting
    WHERE app_id = 'your.app.id.here'                        -- Same app 
      AND DATE_DIFF('day', TRY_CAST(SUBSTR(event_time, 1, 10) AS DATE), DATE('YYYY-MM-DD')) <= 31  -- Replace with target end date
),

all_sessions AS (
    SELECT * FROM ua_sessions
    UNION ALL
    SELECT * FROM retargeting_sessions
)

SELECT COUNT(DISTINCT user_id) AS mau_unified
FROM all_sessions;