You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:57:01