如何计算仅经历PROSPECT到GAIN阶段客户的阶段起始日期差
计算潜在客户转正式客户的耗时(Power BI DAX实现)
核心逻辑
仅保留同时存在PROSPECT(潜在客户)阶段和GAIN(正式客户)阶段记录的客户ID,计算该客户首次进入PROSPECT阶段的日期与首次进入GAIN阶段的日期差值,其余ID自动排除。
方式1:添加计算列(单客户耗时)
在数据表中新增计算列,直接显示每个符合条件客户的转化耗时:
转为正式客户耗时 = VAR 当前客户ID = '你的数据表名'[ID] VAR 潜在阶段首次日期 = CALCULATE( MIN('你的数据表名'[START_DATE]), FILTER(ALL('你的数据表名'), '你的数据表名'[ID] = 当前客户ID && '你的数据表名'[PHASE] = "PROSPECT" ) ) VAR 正式阶段首次日期 = CALCULATE( MIN('你的数据表名'[START_DATE]), FILTER(ALL('你的数据表名'), '你的数据表名'[ID] = 当前客户ID && '你的数据表名'[PHASE] = "GAIN" ) ) RETURN IF( NOT(ISBLANK(潜在阶段首次日期)) && NOT(ISBLANK(正式阶段首次日期)), DATEDIFF(潜在阶段首次日期, 正式阶段首次日期, DAY), BLANK() )
代码说明
- 用变量分别提取当前客户的潜在阶段、正式阶段最早进入日期
- 通过
IF判断两个阶段日期都存在时,计算天数差(可替换DAY为MONTH/YEAR等调整时间单位) - 不符合条件的客户返回空值,后续可视化时可自动过滤
方式2:创建度量值(聚合分析)
如果需要计算整体平均耗时、最长/最短耗时等聚合指标,使用度量值:
平均转化耗时 = VAR 有效客户ID = FILTER( VALUES('你的数据表名'[ID]), CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[PHASE] = "PROSPECT") > 0 && CALCULATE(COUNTROWS('你的数据表名'), '你的数据表名'[PHASE] = "GAIN") > 0 ) VAR 客户转化耗时列表 = ADDCOLUMNS( 有效客户ID, "单客户耗时", DATEDIFF( CALCULATE(MIN('你的数据表名'[START_DATE]), '你的数据表名'[PHASE] = "PROSPECT"), CALCULATE(MIN('你的数据表名'[START_DATE]), '你的数据表名'[PHASE] = "GAIN"), DAY ) ) RETURN AVERAGEX(客户转化耗时列表, [单客户耗时])
代码说明
- 先筛选出同时拥有两个阶段记录的客户ID集合
- 为每个有效客户计算转化耗时,生成临时列表
- 最后对列表中的耗时计算平均值(可替换
AVERAGEX为MAXX/MINX获取极值)
注意事项
- 请将代码中的
你的数据表名替换为实际使用的数据表名称 - 若业务中存在同一客户多次进入同一阶段的情况,代码中用
MIN取首次进入日期,可根据需求调整为MAX取末次日期 - 日期差值的时间单位可按需修改,DAX支持的单位包括:SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR
内容的提问来源于stack exchange,提问作者Comune
相关产品推荐
相关产品推荐

