Power BI/DAX:如何基于#Order维度构建订单数量漏斗分析?
使用DAX实现订单漏斗分析
起始条件
现有一张包含两列的表:
- E-Mail(字符串类型,唯一值)
- Number of Orders(整数类型)
示例数据集
| E-Mail | #Orders | | ------------------ | ------- | | user1@example.com | 1 | | user2@example.com | 1 | | user3@example.com | 4 | | user4@example.com | 4 | | user5@example.com | 4 | | user6@example.com | 5 | | user7@example.com | 2 | | user8@example.com | 1 | | user9@example.com | 5 | | user10@example.com | 4 |
分析目标
构建漏斗分析,统计满足以下条件的唯一客户(以唯一邮箱地址为准)数量:
- 至少完成1笔订单
- 至少完成2笔订单
- 至少完成3笔订单
逻辑示例:统计“至少完成2笔订单”的客户数 = DISTINCTCOUNT(E-Mail) WHERE #Orders >= 2
DAX实现方案
方案1:创建独立度量值
针对每个漏斗层级单独创建度量值,操作简单,适合直接用于图表:
- 至少1笔订单的客户数
客户数_至少1笔订单 = DISTINCTCOUNT('订单表'[E-Mail])
注:由于所有客户的订单数均≥1,直接统计唯一邮箱数量即可
- 至少2笔订单的客户数
客户数_至少2笔订单 = CALCULATE( DISTINCTCOUNT('订单表'[E-Mail]), '订单表'[Number of Orders] >= 2 )
- 至少3笔订单的客户数
客户数_至少3笔订单 = CALCULATE( DISTINCTCOUNT('订单表'[E-Mail]), '订单表'[Number of Orders] >= 3 )
方案2:动态度量值(支持灵活扩展)
如果后续需要增加更多漏斗层级(如≥4、≥5笔订单),可以通过参数表+动态度量值实现:
- 创建漏斗层级参数表
通过Power BI的「输入数据」功能创建名为漏斗层级的表,内容如下:
| 漏斗层级描述 | 最小订单数 |
|---|---|
| 至少1笔订单 | 1 |
| 至少2笔订单 | 2 |
| 至少3笔订单 | 3 |
- 创建动态度量值
动态客户数 = CALCULATE( DISTINCTCOUNT('订单表'[E-Mail]), '订单表'[Number of Orders] >= SELECTEDVALUE('漏斗层级'[最小订单数]) )
使用时,将漏斗层级[漏斗层级描述]拖至图表的轴区域,动态客户数拖至值区域,即可自动生成所有层级的统计结果。
计算结果验证
基于示例数据集,计算结果如下:
- 至少1笔订单:10个客户
- 至少2笔订单:7个客户
- 至少3笔订单:6个客户
内容的提问来源于stack exchange,提问作者Florian
相关产品推荐
相关产品推荐

