You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase中统计用户每日在线与离线时长占比?

实现用户每日在线/离线时长占比的Firebase方案思路

一、先优化事件上报结构

当前上报仅带TIME参数,需补充关键维度,确保每条事件能被精准归类:

  • 给上报事件新增status_type参数,取值为online或offline,明确区分该时长对应的状态
  • 确保事件携带user_id(用户唯一标识),方便按用户维度统计
  • 依赖Firebase自动上报的event_timestamp(或自行传入时间戳),用于按天分组

二、选择统计方式:Firebase Analytics内置报表 or BigQuery

方式1:用Firebase Analytics内置功能快速实现

  1. 在Firebase控制台「Analytics」-「自定义定义」中,创建两个累加型自定义指标:
    • 总在线时长:关联事件中TIME参数,过滤条件为status_type = online
    • 总离线时长:关联事件中TIME参数,过滤条件为status_type = offline
  2. 进入「Analytics」-「探索」创建自定义报表:
    • 时间维度选择「按天」
    • 添加上述两个自定义指标
    • 利用报表「计算字段」功能,新增在线占比(公式:总在线时长/(总在线时长+总离线时长)*100)和离线占比,完成占比统计

方式2:用BigQuery实现更灵活的统计(推荐)

若需要复杂维度分析或数据留存,将Firebase项目关联到BigQuery后,通过SQL聚合数据:

  1. 在Firebase控制台开启BigQuery集成,事件数据会自动同步到对应数据集
  2. 执行以下SQL查询,按用户和日期统计时长及占比:
SELECT
  user_id,
  DATE(TIMESTAMP_MICROS(event_timestamp)) AS stat_date,
  -- 统计当日总在线时长
  SUM(CASE 
        WHEN (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'status_type') = 'online'
        THEN (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'TIME') 
        ELSE 0 
      END) AS total_online_mins,
  -- 统计当日总离线时长
  SUM(CASE 
        WHEN (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'status_type') = 'offline'
        THEN (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'TIME') 
        ELSE 0 
      END) AS total_offline_mins,
  -- 计算占比
  ROUND(total_online_mins / (total_online_mins + total_offline_mins) * 100, 2) AS online_ratio,
  ROUND(total_offline_mins / (total_online_mins + total_offline_mins) * 100, 2) AS offline_ratio
FROM
  `your-project-id.analytics_xxxxxx.events_*` -- 替换为你的BigQuery数据集路径
WHERE
  event_name = 'your_status_report_event' -- 替换为你上报状态时长的事件名
  -- 指定时间范围,示例为最近7天
  AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)) 
                        AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY
  user_id, stat_date
ORDER BY
  stat_date DESC
  1. 查询结果可导出到Looker Studio制作可视化仪表盘,展示每日整体或分用户的占比情况

三、数据校验注意点

  • 每日统计的总时长(在线+离线)应接近1440分钟(24小时),若偏差较大,需检查上报逻辑是否存在事件丢失或重复上报的问题
  • 状态切换时的边界时长需妥善处理:比如用户在线20分钟后切换离线,需确保前15分钟按在线上报,剩余5分钟在切换离线时上报,避免遗漏

内容的提问来源于stack exchange,提问作者GrandPC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:24:47