如何用Spotfire语法统计同一客户初始订单后的指定产品订单数及占比?
Spotfire统计客户初始产品后的特定产品订单方案
核心修正思路
原公式的问题在于只校验了客户是否购买过纸张,但没限定目标订单的日期必须在纸张订单之后。我们需要先锁定每个客户的首次纸张购买日期,再以此为时间节点过滤后续的活页夹/艺术品订单。
分步实现
1. 创建计算列:获取客户首次纸张订单日期
添加一个名为FirstPaperOrderDate的计算列,语法如下:
First([Order Date]) OVER (Intersect([Customer ID], [Category]='paper'))
这个列会返回每个客户第一次购买纸张的日期,未购买过纸张的客户对应值为Null。
2. 创建标记列:标记符合条件的目标订单
添加标记列(用于统计转化订单),语法:
If(([Category]='binders' OR [Category]='Art') AND [Order Date] > [FirstPaperOrderDate], 1, 0)
逻辑说明:仅当订单品类是活页夹/艺术品,且订单日期晚于该客户首次买纸张的日期时,标记为1,否则为0。
3. 统计转化订单数量
直接对上述标记列求和,即可得到所有符合条件的订单总数:
Sum([标记列名称])
4. 计算目标品类的转化占比
- 活页夹订单的转化占比:纸张购买后产生的活页夹订单数 / 所有活页夹订单数
Sum(If([Category]='binders' AND [Order Date] > [FirstPaperOrderDate], 1, 0)) / Sum(If([Category]='binders', 1, 0))
- 艺术品订单的转化占比:纸张购买后产生的艺术品订单数 / 所有艺术品订单数
Sum(If([Category]='Art' AND [Order Date] > [FirstPaperOrderDate], 1, 0)) / Sum(If([Category]='Art', 1, 0))
补充说明
- 未购买过纸张的客户,其活页夹/艺术品订单会被自动排除,不会干扰统计结果
- 若你想基于客户任意纸张订单而非首次订单来统计,只需把
First([Order Date])换成Min([Order Date]),逻辑一致
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

