> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RUM 分析

> 数出走完一串页面和操作的会话，跟踪会话经过的页面，看有多少用户回来。

**RUM → 分析** 回答人们在一次会话里做了什么。它一次看一个应用，可以只看一个环境，也可以看全部环境，时间范围是当前所选；页面打开时没有选过，就是最近 7 天。它有三个视图：**漏斗**、**路径** 和 **留存**。浏览器应用和 App 都能用；用词不同的地方，App 说屏幕，不说页面。

每个视图问的一切都在地址里，所以一个问题就是一条可以分享的链接。

## 漏斗

漏斗数出按顺序做完一串步骤的会话，回答人们在一个流程里（比如结账）从哪里流失。

### 步骤

一个漏斗有 2 到 8 个步骤。**添加步骤** 加一步，步骤末尾的叉号去掉一步。步骤有两种：

| 种类 | 是什么 | 可以看的字段 |
| - | - | - |
| **页面**（App 里是 **屏幕**） | 打开了的一个页面或屏幕。 | **页面分组**（`view.url_path_group`，把 id 这类会变的部分归并后的路径）、**完整路径**（`view.url_path`）、**视图名称**（`view.name`）。浏览器应用的页面从页面分组开始，App 的屏幕从视图名称开始。 |
| **操作** | 人做的一件事：点击、点按、自定义操作。 | **目标名称**（`action.target.name`）、**目标选择器**（`action.target.selector`）、**操作类型**（`action.type`）。 |

每一步在它的字段里找一个值。值从时间范围内数据里最常见的值中选，也可以直接输入。**是** 要求整个值相同，值里的 `*` 代表任意文字。**包含** 匹配含有这段文字的任何值，不分大小写。

### 会话怎样计数

会话按它第一个符合条件的行计入第一步；之后每一步，按晚于上一步那一行、且在同一个会话里第一个符合该步骤的行计入。两步之间打开了别的页面、做了别的操作都不影响：在购物车和结账之间打开过五个别的页面的会话，同样算走完了。

* **时间限制** 只在某一步发生在离第一步这么久之内时才把会话计入：5 分钟、30 分钟、1 小时或 1 天内。**不限时间** 不管会话花了多久都计入。
* **会话按此分组** 按第一步计入会话的那一行的某个字段，每个值各给一个漏斗：浏览器、系统、设备类型、版本或国家。保留会话最多的 10 个值。**不分组** 只给一个。

### 它说什么

每一步一行，横条的长度是它占第一步会话的比例：

| 列 | 含义 |
| - | - |
| **会话** | 走完这一步的会话。 |
| **占第一步** | 占第一步会话的比例。 |
| **流失** | 上一步的会话里没有走到这里的比例。流失超过一半用红色显示。 |
| **耗时中位数** | 上一步到这一步所用时间的中位数。 |

按字段分组的漏斗会多一张表：每个值一行，给出每一步的会话数，旁边是占上一步会话的比例，最后一列 **首尾转化** 是走完所有步骤的会话占第一步会话的比例。

第一步没有人做过的漏斗会这么说，并提供放宽时间范围。步骤、时间限制和分组字段在地址里是 `steps`、`win` 和 `by`。一个步骤写作：页面用 `v:`，操作用 `a:`，接着是字段，`=` 或表示“包含”的 `~`，以及经 URL 编码的值；步骤之间用 `|` 连接。

## 路径

路径跟踪会话打开过的页面：按会话最多的页面分列，两个页面之间的带子有多粗，就有多少会话从一个走到另一个。

* **该页面之后** 跟踪会话接下来打开了什么，**该页面之前** 跟踪它们之前打开了什么。不指定页面时，路径从每个会话的第一个页面开始；往前看时，则到最后一个页面为止。
* 页面从数据里最常见的页面中选，也可以输入，**清除** 把它去掉。点图里的一个页面，路径就从它开始。
* **看几页** 是页面之后（或之前）的 1 到 6 页，默认 3 页。
* **页面按此区分** 是页面分组、完整路径或视图名称（浏览器应用才有）。

页面有多高，就有多少会话在上面。每一列列出会话最多的 8 个页面，其余合并为 **其他页面**。紧接着再次打开的页面（比如刷新）只算一次。路径所围绕的页面是第一列，往前看时是最后一列；没有人走到的列不画出来。提示里会说有多少会话从这个页面再没往下走（往前看时，是从这里开始的）。

页面、方向、页数和区分字段在地址里是 `anchor`、`dir`（`before`）、`depth` 和 `page`。

## 留存

留存数的是谁回来了。时间范围内某一天或某一周首次出现的用户是一个队列，每个单元格说这个队列里有多大比例的人在之后这么多个周期出现了。

* 第一个选项是 **天** 或 **周**。周期是 UTC 的天，以及从周一开始的 UTC 的周，所以队列以它开始的日期命名，与读者的时区无关。
* 第二个选项是跟踪多少个周期：**7 天后**、**14 天后** 或 **30 天后**，按周的队列则以周计。
* 一个人是会话的用户 id；没有用户 id 的访客，则是 SDK 保存在设备上的匿名 id。
* 一个人是在时间范围内首次出现，所以时间范围就是所看的历史。在范围之前来过的人，会在范围里第一次出现的那天被当成新用户。
* 到时间范围结束还没有结束的周期不说明任何事，它的单元格是横线。
* **平均** 取所有能说明问题的队列里全部用户的比例，所以大队列比小队列分量更重。

周期和周期数在地址里是 `period` 和 `periods`。

## 数字怎样统计

每个视图由一条语句统计：读视图、会话和操作，由回答 RUM 其余问题的同一个引擎执行。视图每当数字变化就会再写一次，问到视图的数字时问的是其中最新的一次。一个步骤只问各次写入都相同的内容（页面、应用、环境、版本、浏览器）时，直接读写入时的视图，省去给每个视图挑最新一次的工作；问到视图的数字（错误数、核心指标）或用户是谁时，读最新的一次。引擎对读取者脱敏的内容在这里同样保持脱敏；统计耗时超过时间预算时，页面会这样说明，页面保留：缩小时间范围再问一次。同样的问题也可以通过 API 提出，见 [`/api/v1/rum/analytics`](https://docs.molesignal.com/zh-Hans/api/rum#漏斗、路径与留存)。

作为规模的参考：在一个 10 核节点上，时间范围内有 100 万个会话（1800 万条事件）时，四步页面漏斗约 2 秒，八步约 5 秒，路径约 6 秒，留存约 1.5 秒。耗时随范围内的会话数增长，漏斗还随步数增长。

应用[只保留一部分会话](https://docs.molesignal.com/zh-Hans/rum/sampling.md)时，漏斗和路径把每个会话按它被保留的比例放大计数，所以是所有会话的数量，页面会写明 **估算值**。留存数的是保留下来的会话里看到的人：采样时，队列里只有这些会话的人，常来的人更可能在其中。

页面需要读取 RUM 其余部分的权限 `streams.query`。见 [RUM](https://docs.molesignal.com/zh-Hans/rum#权限)。

## Mole Agent

Mole Agent 用 `get_rum_funnel`、`get_rum_paths` 和 `get_rum_retention` 提出同样的问题。问题出在一个流程上时，内置技能 `/rum-triage` 会用到它们，并把漏斗或路径以链接的形式引用到这个页面。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.