GoWindGoWind
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
  • Introduction

    • GoWind UBA Product Introduction
  • Architecture Reference

    • UBA System Architecture
    • UBA Backend Module Overview
    • UBA Backend API Contract
    • UBA Frontend Architecture
  • Developer Guide

    • UBA Installation Guide
    • UBA Code Generation Pipeline Tutorial
    • Adding an External Service Tutorial
    • Adding a Business Entity Tutorial
    • Adding a Frontend Page Tutorial
  • Operations Guide

    • UBA Docker Deployment Guide
    • UBA Configuration Reference & Security Checklist
    • UBA PM2 Deployment Guide
    • UBA Superset BI Deployment Guide
  • Analyst Guide

    • Data Analyst Getting Started Guide
    • Basic Aggregation

      • Event Trend Analysis
      • Active Users Analysis
      • Group By Aggregation
    • Conversion & Paths

      • Funnel Analysis
      • Retention Analysis
      • Top Conversion Paths
      • Behavior Sequence Analysis
    • User Depth

      • Attribution Analysis
      • Distribution Analysis
      • User Segmentation
      • Click Heatmap
      • Interval Analysis
    • Lifecycle

      • User Lifecycle
      • Churn & Reactivation Analysis
      • New vs Returning Users
      • Matrix Quadrant Analysis
    • Revenue & Value

      • Revenue Analysis
      • Whale Tier (Payer Segmentation)
      • Historical LTV Analysis
    • Sessions & Anomalies

      • Session Analysis
      • Period-over-Period Comparison and Anomaly Detection
    • Gaming

      • Level Analysis (Game)
      • Server Retention (Game)
      • Online Stats Analysis (Game)
      • Economy Analysis (Game)
    • OLAP Cookbook
  • SDK Integration

    • Web SDK Integration Guide
    • C# SDK Integration Guide (Unity / Godot / .NET)
  • Appendix

    • UBA Appendix: Ports, Glossary, Known Limitations & FAQ

Distribution Analysis

Distribution Analysis (Distribution) computes the bucketed distribution and percentiles of event durations, answering "how long does this usually take, and is there a long tail". It corresponds to the backend AnalyticsService.Distribution.


1. What Questions It Answers

  • How long does a user take to finish a game round on average? What are P50 / P90?
  • What does the page dwell time distribution look like? Are there many instant bounces?
  • How severe is the long tail (P90) of loading time?

2. Key Metrics

MetricMeaning
Bucketed distributionShare of events per duration interval
avgAverage duration (seconds)
P50Median (half of the events are faster)
P9090th percentile (only 10% of events are slower; reflects the long tail)
maxMaximum value

Bucket labels: 0_10s / 10_60s / 1_5min / 5min_plus.


3. Backend API

gRPC: AnalyticsService.Distribution

FieldTypeDescription
time_rangeTimeRangeAnalysis time range
event_namestringTarget event name (e.g. page_view, game_round)
app_iduint32 (optional)Filter by app

Response DistributionResponse: buckets[] (DistributionBucket contains bucket label / count / percentage), summary (DistributionSummary contains avg_sec / p50_sec / p90_sec / max_sec / count).

HTTP (admin proxy)

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

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

4. Implementation

It relies on the duration_ms (duration in milliseconds) field reported with the event:

  • Each event's duration_ms falls into a predefined bucket; bucket counts are tallied.
  • On top of the buckets, an avg / P50 / P90 percentile summary is computed.

Therefore only events that populate duration_ms when reported are meaningful for distribution. The duration must be explicitly passed when reporting via the client SDK (e.g. track('page_view', {...}, { durationMs: ... })).


5. Typical Scenarios

Page dwell time distribution

eventName=page_view: view the dwell distribution per page. P50 reflects typical dwell time; a high 0_10s share means severe instant bounces.

Game/video duration analysis

eventName=game_round: view round duration to judge whether game pacing is reasonable (too long drives churn, too short lacks immersion).

Performance monitoring

Use duration_ms for API/loading durations, monitor the P90 long tail, and detect performance degradation.


6. Notes and Caveats

  • Depends on duration_ms: without a reported duration, the distribution is meaningless (all events may land in the 0 bucket).
  • Fixed buckets: bucket intervals are predefined and cannot be customized. For custom binning, write your own SQL per the OLAP Cookbook.
  • P90 ≠ slowest: P90 reflects the long tail but is not the extreme; max is the single slowest point.
  • Unit is seconds: avg/p50/p90/max in the response are all in seconds, while duration_ms is stored in milliseconds.

7. Related Documents

  • Interval Analysis
  • Session Analysis
  • Data Analyst Getting Started Guide
  • Backend API Contract
Edit this page
Last Updated:: 11/3/26, 2:14 PM
Contributors: Bobo
Prev
Attribution Analysis
Next
User Segmentation