PowerBI中按阶段优先级保留客户最新阶段重复记录的实现方法
PowerBI 保留客户最新阶段重复记录的实现方案
一、Power Query Editor 方案(推荐,便于后续关联)
步骤1:添加阶段优先级映射列
进入Power Query编辑器,选中CRM数据表,点击「添加列」→「自定义列」,输入以下公式(将阶段转换为可排序的优先级数值,数值越大代表阶段越新):
= if Text.Contains([客户阶段], "Lead") then 1 else if Text.Contains([客户阶段], "Prospect") then 2 else if Text.Contains([客户阶段], "Profile") then 3 else 0
将该列命名为阶段优先级。
步骤2:按客户分组获取最高优先级
点击「转换」→「分组依据」,配置如下:
- 分组依据:选择客户唯一标识字段(如
客户ID) - 新列名:
客户最大优先级 - 操作:
最大值 - 列:
阶段优先级
点击确定后,得到每个客户对应的最新阶段优先级。
步骤3:合并原表与分组结果
回到原CRM数据查询,点击「合并查询」→「合并查询作为新查询」:
- 左表:原CRM数据表
- 右表:刚生成的分组表
- 匹配字段:客户唯一标识(如
客户ID) - 合并类型:左外部
展开合并后的列,仅保留客户最大优先级字段。
步骤4:筛选最新阶段记录
添加筛选条件:阶段优先级等于客户最大优先级,此时将保留该客户所有处于最新阶段的记录(包括重复项)。
步骤5:清理辅助列(可选)
删除阶段优先级和客户最大优先级两个辅助列,保留业务所需字段即可。
二、度量值方案(当Power Query无法满足场景时)
步骤1:创建阶段优先级计算列
在数据视图中,新建计算列:
阶段优先级 = SWITCH( TRUE(), CONTAINSSTRING('CRM数据'[客户阶段], "Lead"), 1, CONTAINSSTRING('CRM数据'[客户阶段], "Prospect"), 2, CONTAINSSTRING('CRM数据'[客户阶段], "Profile"), 3, 0 )
步骤2:创建筛选度量值
新建度量值:
保留最新阶段 = VAR 当前客户 = SELECTEDVALUE('CRM数据'[客户ID]) VAR 客户最高优先级 = CALCULATE(MAX('CRM数据'[阶段优先级]), ALL('CRM数据'), 'CRM数据'[客户ID] = 当前客户) RETURN IF(MAX('CRM数据'[阶段优先级]) = 客户最高优先级, 1, 0)
步骤3:应用筛选
在报表视图中,将保留最新阶段度量值拖入筛选器面板,设置为等于1,即可在可视化组件中显示客户所有最新阶段的记录(含重复项)。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

