Power BI中如何计算复购用户首次与第二次非同日购买的间隔天数
Power BI 无需M代码计算用户首购与二次非同日购买间隔方案
所有计算均使用DAX实现,无需进入Power Query编辑器编写M代码。
前提准备
- 确认订单表包含3个核心字段,字段名可根据你的实际表名修改:
用户ID:唯一标识用户的字段订单日期:格式为日期类型,不可为文本格式订单ID:唯一标识每笔订单的字段
步骤1:创建【首次购买日期】计算列
在数据视图中选中订单表,新建计算列,输入以下DAX公式:
首次购买日期 = CALCULATE( MIN('订单表'[订单日期]), ALLEXCEPT('订单表', '订单表'[用户ID]) )
该计算列会为同一用户的所有订单行,统一赋值该用户的最早下单日期。
步骤2:创建【二次非同日购买日期】计算列
继续新建计算列,输入以下DAX公式,自动筛选每个用户晚于首购日的最早下单日期(自动排除同日多单的情况):
二次非同日购买日期 = CALCULATE( MIN('订单表'[订单日期]), ALLEXCEPT('订单表', '订单表'[用户ID]), '订单表'[订单日期] > '订单表'[首次购买日期] )
步骤3:创建【首二次购买间隔(天)】计算列
新建计算列,仅对订单数大于1的用户计算间隔,其余用户返回空值:
首二次购买间隔(天) = VAR 用户累计订单数 = CALCULATE(COUNT('订单表'[订单ID]), ALLEXCEPT('订单表', '订单表'[用户ID])) RETURN IF( 用户累计订单数 > 1 && NOT(ISBLANK('订单表'[二次非同日购买日期])), DATEDIFF('订单表'[首次购买日期], '订单表'[二次非同日购买日期], DAY), BLANK() )
结果输出
在报表视图中添加表格视觉对象,依次放入用户ID、首次购买日期、二次非同日购买日期、首二次购买间隔(天)字段,筛选掉间隔为空的条目,即可得到符合要求的结果。
可选:动态度量值版本
如果需要配合切片器做动态查询,无需预计算全量用户的间隔,可直接创建以下度量值:
首二次购买间隔_动态 = VAR 当前选中用户 = SELECTEDVALUE('订单表'[用户ID]) VAR 用户订单总量 = CALCULATE(COUNT('订单表'[订单ID]), ALL('订单表'), '订单表'[用户ID] = 当前选中用户) VAR 首购日期 = CALCULATE(MIN('订单表'[订单日期]), ALL('订单表'), '订单表'[用户ID] = 当前选中用户) VAR 二次购日期 = CALCULATE(MIN('订单表'[订单日期]), ALL('订单表'), '订单表'[用户ID] = 当前选中用户, '订单表'[订单日期] > 首购日期) RETURN IF( 用户订单总量 > 1 && NOT(ISBLANK(二次购日期)), DATEDIFF(首购日期, 二次购日期, DAY), BLANK() )
内容的提问来源于stack exchange,提问作者WhoIsKi
相关产品推荐
相关产品推荐

