GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • 介绍

    • GoWind UBA 产品介绍
  • 架构参考

    • UBA 系统架构
    • UBA 后端模块总览
    • UBA 后端 API 契约
    • UBA 前端架构
  • 开发者指南(二开)

    • UBA 安装指南
    • UBA 代码生成管线教程
    • 新增对外服务教程
    • 新增业务实体教程
    • 新增前端页面教程
  • 运维指南

    • UBA Docker 部署指南
    • UBA 配置详解与安全清单
    • UBA PM2 部署指南
    • UBA Superset BI 部署指南
  • 数据分析师指南

    • 数据分析师上手指南
    • 基础聚合

      • 事件趋势分析
      • 活跃用户分析
      • 维度分组聚合
    • 转化与路径

      • 漏斗分析
      • 留存分析
      • 热门转化路径
      • 行为序列分析
    • 用户深度

      • 归因分析
      • 分布分析
      • 用户分群圈选
      • 点击热力图
      • 间隔时间分析
    • 生命周期

      • 用户生命周期
      • 流失与回流分析
      • 新老用户对比
      • 矩阵象限分析
    • 营收与价值

      • 营收分析
      • 付费分层(鲸鱼分析)
      • 历史 LTV 分析
    • 会话与异常

      • 会话分析
      • 同比环比与异常检测
    • 游戏专属

      • 关卡分析(游戏)
      • 滚服留存(游戏)
      • 同时在线分析(游戏)
      • 经济系统分析(游戏)
    • OLAP 查询手册
  • SDK 接入

    • Web SDK 接入指南
    • C# SDK 接入指南(Unity / Godot / .NET)
  • 附录

    • UBA 附录:端口、术语、已知限制与 FAQ

分布分析

分布分析(Distribution)统计某事件耗时(duration)的分桶分布与分位数,回答"这件事通常花多久、有没有长尾"。对应后端 AnalyticsService.Distribution。


一、它能回答什么问题

  • 用户完成一局游戏平均多久?P50 / P90 是多少?
  • 页面停留时长的分布如何?有没有大量"秒退"?
  • 加载耗时的长尾(P90)有多严重?

二、关键指标

指标含义
分桶分布按耗时区间统计事件数占比
avg平均耗时(秒)
P50中位数(一半事件快于它)
P9090 分位(仅 10% 事件慢于它,反映长尾)
max最大值

分桶标签:0_10s / 10_60s / 1_5min / 5min_plus。


三、后端接口

gRPC:AnalyticsService.Distribution

字段类型说明
time_rangeTimeRange分析时间范围
event_namestring目标事件名(如 page_view、game_round)
app_iduint32(可选)按应用过滤

响应 DistributionResponse:buckets[](DistributionBucket 含 bucket 分桶标签 / count / percentage)、summary(DistributionSummary 含 avg_sec / p50_sec / p90_sec / max_sec / count)。

HTTP(admin 转发)

POST /admin/v1/analytics/distribution
Content-Type: application/json

{
  "timeRange": { "startMs": 1718169600000, "endMs": 1718774399000 },
  "eventName": "page_view"
}

四、实现原理

依赖事件上报时的 duration_ms(耗时,毫秒)字段:

  • 把每个事件的 duration_ms 落入预设分桶,统计各桶数量。
  • 在分桶基础上计算 avg / P50 / P90 分位数摘要。

因此只有上报时填了 duration_ms 的事件才有分布意义。耗时需在客户端 SDK 上报时显式传入(如 track('page_view', {...}, { durationMs: ... }))。


五、典型场景

页面停留时长分布

eventName=page_view:看用户在页面的停留分布,P50 反映典型停留,0_10s 占比高说明秒退严重。

游戏/视频时长分析

eventName=game_round:看一局游戏时长,评估游戏节奏是否合理(太长流失、太短缺乏沉浸)。

性能监控

把 duration_ms 用作接口/加载耗时,监控 P90 长尾,发现性能劣化。


六、注意事项

  • 依赖 duration_ms:事件未上报耗时,则分布无意义(所有事件可能落在 0 桶)。
  • 分桶固定:分桶区间是预设的,无法自定义;需要自定义分箱时用 OLAP 查询手册 自建 SQL。
  • P90 ≠ 最慢:P90 反映长尾但不是极值,max 才是单点最慢。
  • 单位是秒:响应里 avg/p50/p90/max 都是秒,duration_ms 入库是毫秒。

七、相关文档

  • 间隔时间分析
  • 会话分析
  • 数据分析师上手指南
  • 后端 API 契约
Edit this page
Last Updated:: 6/29/26, 3:57 PM
Contributors: Bobo
Prev
归因分析
Next
用户分群圈选