Appearance
文档 搜索⌘``K入门数据分析Amplitude AI会话回放指南与调查实验管理 开发者 SDK API合作伙伴常见问题分析 / 图表 / 事件分群 (Event Segmentation) / 自定义公式:语法和定义
自定义公式:语法和定义
- 了解并使用 Amplitude 中的自定义公式,创建您需要的精确分析
使用自定义公式创建高级可视化 在单个图表中创建高级比较,应用滚动和累积度量,并可视化趋势。 学习自定义公式 在事件分群或数据表图表中,Measured As 模块的 Advanced 下拉菜单中的 Formula 选项为您执行分析时提供更大的灵活性。自定义公式对于在同一图表上比较各种分析也非常有用。 从20多个自定义公式中进行选择,以绘制您需要的指标。您可以在同一图表上绘制多达十个公式,用分号分隔。 本文解释了自定义公式的机制,以及您可以立即使用的公式示例。
注意
虽然实验结果图表也使用公式度量,但其方式与事件分群或数据表图表不同。要了解有关这些差异的更多信息,请转到关于在 Amplitude 的实验结果图表中使用公式度量的帮助中心文章。
公式语法
在您的公式中,通过对应的字母引用事件模块中选定的事件。函数和参数不区分大小写。您还可以执行以下算术运算:
- 括号 ()
- 加法 (+)
- 减法 (-)
- 乘法 (*)
- 除法 (/) 例如,公式
UNIQUES(A)中的字母 A 指的是事件View Item Details,而公式UNIQUES(B)中的字母 B 指的是事件Add Item to Cart。此设置显示查看商品详细信息的用户与将商品放入购物车的用户的比率。
您还可以编写一个由事件组成的公式,按属性对每个事件进行分组。但是,要使公式有效,这些属性必须在您分群的所有事件中具有匹配值。 例如,如果您有一个名为 Page Name的事件,以下属性值将不匹配: Tutorial和TUTORIAL(匹配区分大小写)1和1.0(非匹配字符) 属性分组的顺序也很重要。两个事件必须以相同的顺序具有 grouped by 值;否则,会出现警告,提示事件没有匹配的分组值。
多项公式的排名
当您使用带有分组的多项公式度量时,Amplitude 按公式中所有度量的唯一用户之和对组进行排名,而不是按最终计算值。这可能会影响哪些组出现在高基数结果中。有关更多详细信息,请查看数据表中的列排名行为。 您还可以使用自定义公式来发现一个群组中的用户触发特定事件的次数比起另一个群组中的用户多多少。 要比较两个不同群组或用户细分之间的指标,请将细分编号添加到指定事件的字母:UNIQUES(A1)/UNIQUES(A2)。这将在图表中显示相同事件上您的群组的表现比率作为单条绘制线。
您还可以通过将以下前缀添加到您的公式中,以百分比或美元查看您的指标:
- 百分比 (%😃
- 美元 ($:)
可用公式列表
本节按类型列出可用公式:度量、聚合和函数。点击公式名称以查看其语法。
度量公式
使用度量公式,您可以查询您感兴趣的特定事件的度量。这些公式以绿色编码。每个度量公式需要一个对应于您感兴趣的事件的字母作为参数。 | | | ---|---|---|--- ACTIVE | ARPAU | AVG | FREQPERCENTILEHIST | PERCENTILE | PROPAVG | PROPCOUNTPROPCOUNTAVG | PROPHIST | PROPMAX | PROPMINPROPSUM | REVENUETOTAL | TOTALS | UNIQUESEVENTTOTALS | SESSIONTOTALS | SEMANTICTOTALS |
聚合公式
聚合公式允许您查询感兴趣的度量和事件的滚动平均值或滚动窗口。这些公式以紫色编码。每个聚合公式需要三个组件:您正在聚合的度量、您感兴趣的事件以及聚合的间隔。 | | | ---|---|---|--- CUMSUM | ROLLAVG | ROLLWIN | ROLLWINBEFORE
函数公式
函数公式允许您为您感兴趣的特定事件和度量查询数学函数。这些公式以蓝色编码。每个函数公式需要一个值,该值可以是常数,也可以是包含事件的另一个公式。 | | | ---|---|---|--- EXP | LN | LOG | LOG10POWER | SQRT | TRENDLINE |
度量公式
ACTIVE
语法: ACTIVE(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
ACTIVE公式返回触发事件的活跃用户百分比。这与 Measured 卡中的Active %度量相同,但此处以小数形式显示。此设置显示触发View Item Details事件的活跃用户百分比。
ARPAU
语法: $:ARPAU(event)
- Event: 指收入事件。这必须是对应于事件卡中事件的字母。
- 此函数仅在您按事件的数值属性分组时有效。 返回格式化为货币的收入事件属性的总和,除以同一时间段内的唯一活跃用户数。它与
PROPSUM(event) / UNIQUES(any active event)相同。 例如,以下设置显示了一家通用电子商务公司的每活跃用户平均收入:
如上截图所述,$:前缀是可选的。它的存在确保输出格式为货币。
注意
您不能将 ARPAU 与 聚合公式 结合使用。
AVG
语法: AVG(event)
- Event: 指您感兴趣的事件。这必须是对应于图表控制面板左侧模块中事件的字母。 返回用户触发事件的平均次数。此函数与
TOTALS(event)/UNIQUES(event)相同。此设置显示View Item Details被触发的次数与Add Item to Cart被触发的次数之比,View Item Details被触发的平均次数,以及同一图表上Add Item to Cart被触发的平均次数。
FREQPERCENTILE
语法: FREQPERCENTILE(event, percentage)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Percentage: 指您感兴趣的百分位数。此值必须小于或等于 1。 返回所有用户的输入 百分位数 事件频率。百分位数是一个度量,表示低于该值的值的给定百分比。例如,以下公式显示了触发
View Item Details事件的用户的第 90 百分位数。
然后,您可以利用这些信息创建您的超级用户的 行为群组,并进一步分析它们,看看是什么将它们与不在群组中的用户区分开来。
HIST
语法: HIST(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。 返回选定时间段内每个唯一用户的事件频率分布。以下设置显示了
Complete Purchase事件的事件频率分布。
我们可以看到,在过去30天里,有22,075名用户完成了五次购买。 HIST 的语法对于 用户会话图表 略有不同,因为会话是指标的焦点。 语法 : HIST(session) - Session: 指您感兴趣的会话。这必须是对应于会话卡中会话的字母。 返回选定时间段内会话持续时间(以秒为单位)的分布。以下设置显示了所有会话持续时间的分布。

PERCENTILE
语法: PERCENTILE(event, percentage)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Percentage: 指您感兴趣的百分位数。此值必须小于或等于 1。
注意
此函数仅在您按事件的数值属性分组时有效。 返回分组属性的输入 百分位数。例如,以下公式返回所有 Complete Purchase 事件收入的第 90 百分位数。
PERCENTILE 公式可能有用的另一个示例是,如果您正在跟踪产品的加载时间,试图确保特定百分比的加载时间低于某个阈值。
PROPAVG
语法: PROPAVG(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- 此函数仅在您按事件的数值属性分组时有效。如果按多个属性分组,公式将使用第一个分组子句运行计算。 返回您分组的属性值的平均值。此函数与
PROPSUM(event)/TOTALS(event)相同。
注意
PROPAVG 公式忽略所选属性值为 (none) 的事件。 以下设置显示了特定日期完成购买产生的平均收入。 
PROPCOUNT
语法: PROPCOUNT(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。如果按多个属性分组,公式将使用第一个分组子句运行计算。 返回事件分组属性的不同属性值的数量。在此示例中,公式检索在给定的 DAU 图表期间具有活跃用户的不同国家数量:

PROPCOUNT是不同属性值的估计。该估计来自 HyperLogLog 算法,其准确性取决于它必须处理的数据量。对于少于12,000个唯一值,相对误差在0.1%范围内,对于超过12,000个唯一属性值,相对误差高达0.5%,具体取决于属性的基数。
PROPCOUNTAVG
语法: PROPCOUNTAVG(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。如果按多个属性分组,公式将使用第一个分组子句运行计算。 返回每个用户对于指定属性所拥有的不同值的平均数。 例如,想象一下您对音乐应用订阅者收听的平均歌曲流派数量感兴趣。每次用户播放歌曲时,都会触发
Play Song or Video事件;每首播放的歌曲还会捕获Genre_Type事件属性。对Play Song or Video按Genre_Type分组运行PROPCOUNTAVG可以得到触发Play Song or Video的用户拥有的平均唯一Genre_Type值数。
PROPHIST
语法: PROPHIST(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- 此函数适用于事件的数字分组属性。如果按多个属性分组,公式将使用第一个分组子句运行计算。 返回选定时间段内您分组的属性值的分布。此示例显示了在给定窗口期间完成购买的用户的购物车价值直方图:

PROPMAX
语法 : PROPMAX(event)
- Event: 返回您对指定事件进行分组的属性的最大值。该属性必须是数字。如果按多个属性分组,计算将使用第一个分组子句运行。
PROPMIN
语法 : PROPMIN(event)
- Event: 返回您对指定事件进行分组的属性的最小值。该属性必须是数字。如果按多个属性分组,计算将使用第一个分组子句运行。
PROPSUM
语法: PROPSUM(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。该事件必须按照您想要汇总的属性进行分组。
- 此函数仅在您按事件的数值属性分组时有效。如果按多个属性分组,公式将使用第一个分组子句运行计算。 返回您对指定事件进行分组的属性值的总和。例如,此可视化显示
Complete Purchase事件产生的总收入。
PROPSUM 的语法对于 用户会话图表 略有不同,因为会话是指标的焦点。 语法 : PROPSUM(session) - Session: 指您感兴趣的会话。这必须是对应于会话卡中会话的字母。 返回指定会话的总时间(以秒为单位的持续时间之和)。例如,以下图表显示了所有会话的总时间(以秒为单位)。

REVENUETOTAL
语法: $:REVENUETOTAL(event)
- Event: 指收入事件。这必须是对应于事件卡中事件的字母。
- 此函数仅在您按事件的数值属性分组时有效。此外, 返回格式化为货币的属性的总和。它与
PROPSUM(event)相同。例如,以下设置显示了按天计算的购买产生的总收入:
如上截图所述,$:前缀是可选的。它的存在仅确保输出格式为货币。
TOTALS
语法: TOTALS(event)
- Event: 指您感兴趣的事件。这必须是对应于图表控制面板左侧模块中事件的字母。 返回用户触发事件的总次数。此设置显示用户查看商品详细信息的总次数,加上用户将商品添加到购物车的总次数。

UNIQUES
语法: UNIQUES(event)
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。 返回触发事件的唯一用户数。例如,以下设置显示查看商品详细信息的用户与将商品添加到购物车的用户的比率。
UNIQUES 的语法对于 用户会话图表 略有不同,因为会话是指标的焦点。 语法 : UNIQUES(session) - Session: 指您感兴趣的会话。这必须是对应于会话卡中会话的字母。 返回参与由指定会话定义的会话的唯一用户数。例如,以下设置显示参与时间超过一分钟的会话的用户与参与至少包含一个
Search Items事件的会话的用户的比率。
EVENTTOTALS
语法: EVENTTOTALS(session)
- Session: 指您感兴趣的会话。这必须是对应于会话卡中会话的字母。 此公式度量 仅 在 用户会话图表 中可用。返回每此会话期间触发的事件总数。 例如,以下设置显示所有会话中的
Page Viewed事件数。
SESSIONTOTALS
返回会话数。此公式指标在 用户会话 和 事件分群 图表中均可用。 传递给 SESSIONTOTALS 的值取决于您使用的图表:
| 图表 | 语法 | 描述 |
|---|---|---|
| 用户会话 | SESSIONTOTALS(session) | 返回与会话卡中指定会话标签匹配的会话数。 |
| 事件分群 | SESSIONTOTALS(event) | 返回包含指定事件至少一次的会话数。 |
例如,以下设置显示了过去30天内,英国所有在每个会话期间完成至少一次 Add to Cart 事件的用户的总会话数。 | ||
![]() |
SEMANTICTOTALS
语法 : SEMANTICTOTALS(event, semantic)
- Event : 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Semantic : 定义在按购物车属性(数组属性)分组时如何计算总数。支持的值包括:
UNIQUE_ARRAY_VALUES: 通过对数组属性值进行重复数据删除来执行“计算事件”ALL_VALUES: 通过计算数组属性内的每个项目而不进行重复数据删除来执行“计算项目” 返回具有对数组属性如何计算的显式控制的事件发生的总次数。这为您提供了基于公式的访问权限,访问在按购物车属性分组时事件总计和平均测量控件中可用的相同计数选项。 例如,假设一个带有购物车属性item_list.product_category的Checkout事件。如果单个Checkout事件包含两个炸玉米饼(一个脆皮炸玉米饼和一个软炸玉米饼),它们都在相同的产品类别“炸玉米饼”下:
SEMANTICTOTALS(A, UNIQUE_ARRAY_VALUES)计算 1 个 Checkout 事件SEMANTICTOTALS(A, ALL_VALUES)计算 2 个 Checkout 项目
注意
TOTALS 的默认行为保持不变(相当于“计算项目”)。当您需要显式选择计算事件还是计算项目时,请使用 SEMANTICTOTALS。
聚合公式
CUMSUM
语法: CUMSUM(metric, event)
- Metric: 您希望聚合的度量。这是上面列出的度量公式之一。 返回选定事件的度量,并在图表的时间范围内进行天/周/月的运行总计。 例如,此图表显示了过去30天内
Complete Purchase事件收入的每日 累积总和。2月22日的数据点是2月20日、21日和22日产生的收入之和。
CUMSUM(UNIQUES,A)返回每个数据点的唯一用户去重计数。
ROLLAVG
语法: ROLLAVG(metric, event, # of intervals)
- Metric: 您希望聚合的度量。这是上面列出的度量公式之一。
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Number of intervals: 要包含在滚动平均值中的五分钟间隔、小时、天、周或月的数量。例如,每日图表仅允许每日间隔的滚动平均值。滚动平均值的最大范围是36个五分钟间隔(相当于三小时),72小时,90天,12周或12个月。 返回选定事件的度量及选定间隔的 滚动平均值。例如,以下图表显示了您的每周滚动平均值叠加在每日活跃用户之上。
图表中的蓝线显示每日活跃用户,绿线显示每周滚动平均值。这对于查看您的每日活跃用户数是高于还是低于滚动平均值非常有用。 
ROLLWIN
语法: ROLLWIN(metric, event, # of five-minute intervals/hours/days/weeks/months)
- Metric: 您希望聚合的度量。这是上面列出的度量公式之一。
- Event: 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Number of intervals: 要包含在滚动平均值中的五分钟间隔、小时、天、周或月的数量。例如,每日图表仅允许每日间隔的滚动平均值。滚动平均值的最大范围是36个五分钟间隔(相当于三小时),72小时,90天,12周或12个月。 返回选定事件的度量,带有您指定的天数、周数或月数的 滚动窗口,其中滚动窗口聚合在群组过滤器 之后 应用(如果正在使用)。 例如,此图表首先计算每个时间间隔的新用户,然后在此基础上执行滚动窗口聚合。
图表显示的一天(或一周或一月)是窗口的最后一天。
ROLLWINBEFORE
语法 : ROLLWINBEFORE(metric, event, # of five-minute intervals/hours/days/weeks/months)
- Metric : 您希望聚合的度量。这是上面列出的度量公式之一。
- Event : 指您感兴趣的事件。这必须是对应于事件卡中事件的字母。
- Number of intervals : 要包含在滚动平均值中的五分钟间隔、小时、天、周或月的数量。例如,每日图表仅允许每日间隔的滚动平均值。滚动平均值的最大范围是36个五分钟间隔(相当于三小时),72小时,90天,12周或12个月。 返回选定事件的度量,带有输入的天数/周数/月数的 滚动窗口,其中滚动窗口聚合在群组过滤器 之前 应用(如果正在使用)。 例如,此图表首先计算每个时间间隔的滚动活跃用户,然后在此基础上应用新用户群组过滤器。

函数公式
EXP
语法: EXP(value)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
UNIQUES)。接受的最大值为 700。 返回 e 的指定值次幂。例如,此公式计算 e 的用户购买门票平均次数之幂。
LN
语法: LN(value)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
UNIQUES)。 返回该值的 自然对数。这是以数学常数 e 为底的对数。例如,LN(UNIQUES(A))将计算触发事件 A 的唯一用户数的自然对数。
LOG
语法: LOG(value, base)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
TOTALS)。 - Base: 一个常数。底数必须是常数,不能包含其他函数。 返回以底数为底的该值的 对数。例如,以下公式返回以3为底的唯一活跃用户计数的对数。

LOG10
语法: LOG10(value)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
AVG)。 返回以10为底的该值的 对数。例如,以下公式返回以10为底的用户触发Complete Purchase的平均次数的对数。
POWER
语法: POWER(value, exponent)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
TOTALS)。 - Exponent: 一个常数。指数必须是常数,不能包含其他函数。 返回输入值的指定指数次幂。例如,
POWER(UNIQUES(A), 2)返回触发事件 A 的唯一用户数的平方。
SQRT
语法: SQRT(value)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的 AVG)。 返回该值的 平方根。例如,
SQRT(TOTALS(A))将返回用户触发事件 A 的总次数的平方根。
TRENDLINE
语法: TRENDLINE(value)
- Value: 该值可以是常数或其他函数(例如,您传入的值可以是事件的
UNIQUES)。 返回该值的 普通最小二乘线性回归 趋势线。您应该强烈考虑在此公式旁边绘制另一个自定义公式,以便您可以比较它们。否则,TRENDLINE函数只会给您一条没有上下文的直线。 例如,使用此函数了解购买歌曲或视频的用户数趋势线,并将其与唯一用户数进行比较。
此页面对此有帮助吗? 需要帮助? 联系支持 访问 Amplitude.com 查看 Amplitude 博客 在 Amplitude Academy 了解更多 服务条款 隐私声明 可接受使用政策 法律 © 2026 Amplitude, Inc. 保留所有权利。Amplitude 是 Amplitude, Inc. 的注册商标。

