Power BI二次购买关联分析需求:首购商品筛选次购商品统计
Power BI首购后复购商品分析报表制作指南
一、先理清楚现有数据
你提供的订单表包含三列:客户、客户订单序号(每个客户的订单顺序,1代表首单,2代表第二单)、商品,这个结构完全满足需求,无需调整原始数据。
二、创建必要的DAX计算
1. 生成独立的商品维度表
用DAX创建独立的商品维度表,避免后续切片器与报表商品的筛选冲突:
商品维度表 = DISTINCT('订单表'[商品])
在模型视图中,将「商品维度表」的「商品」列与「订单表」的「商品」列建立一对多关系。
2. 标记客户的首购商品
创建计算列,让每个客户的所有订单行都带上自己的首购商品:
客户首购商品 = CALCULATE( MAX('订单表'[商品]), ALLEXCEPT('订单表', '订单表'[客户]), '订单表'[客户订单序号] = 1 )
3. 统计复购商品的用户数
统计首单后所有复购订单的商品用户数
复购商品用户数 = VAR 选中的首购商品 = VALUES('商品维度表'[商品]) VAR 符合条件的客户 = CALCULATETABLE( VALUES('订单表'[客户]), '订单表'[客户首购商品] IN 选中的首购商品, '订单表'[客户订单序号] > 1 ) RETURN CALCULATE( DISTINCTCOUNT('订单表'[客户]), '订单表'[客户] IN 符合条件的客户, '订单表'[客户订单序号] > 1 )
仅统计第二个订单的商品用户数
如果只关注首单后的第一个复购订单,把度量值中的>1替换为=2即可:
第二单商品用户数 = VAR 选中的首购商品 = VALUES('商品维度表'[商品]) VAR 符合条件的客户 = CALCULATETABLE( VALUES('订单表'[客户]), '订单表'[客户首购商品] IN 选中的首购商品, '订单表'[客户订单序号] = 2 ) RETURN CALCULATE( DISTINCTCOUNT('订单表'[客户]), '订单表'[客户] IN 符合条件的客户, '订单表'[客户订单序号] = 2 )
三、搭建可视化报表
- 添加切片器:拖入「商品维度表」的「商品」字段,作为首购商品的筛选控件。
- 添加可视化图表:推荐使用簇状条形图或表格:
- 簇状条形图:Y轴选「订单表」的「商品」,值选上述创建的「复购商品用户数」或「第二单商品用户数」
- 表格:列选「订单表」的「商品」和对应的度量值
- 验证效果:例如选择切片器中的「Steak(牛排)」,表格会显示:
- Mashed Potatoes(土豆泥):2人(Greg和Cindy)
- Green Beans(青豆):1人(Susie)
- Cake(蛋糕):1人(Greg)
(若使用「第二单商品用户数」,则仅显示前两项,因为Cake是Greg的第三单商品)
四、踩坑提示
- 必须使用独立的商品维度表,否则直接用订单表的商品做切片器会过滤掉复购商品行,导致统计结果错误。
- 确保「客户订单序号」是每个客户的正确订单顺序,序号错乱会导致首购商品判断失效。
- 若需排除复购首购同款商品的情况,可在度量值中添加过滤条件:
'订单表'[商品] NOT IN 选中的首购商品
内容的提问来源于stack exchange,提问作者Michael Marhefka
相关产品推荐
相关产品推荐

