Power BI如何移除重复行?仅展示员工最新职位单行数据
保留Power BI中员工最新职位的单行数据实现方法
方法一:使用DAX计算列标记并筛选
- 在数据模型中选中目标表,创建计算列,输入以下DAX表达式(替换
你的表名为实际表名):
IsLatestPosition = VAR MaxDate = CALCULATE(MAX('你的表名'[Date]), ALLEXCEPT('你的表名', '你的表名'[Name])) VAR CurrentDate = '你的表名'[Date] -- 同日期下按职位优先级排序(示例中Senior Engineer比Engineer层级高,故用降序) VAR PositionRank = RANKX( FILTER('你的表名', '你的表名'[Name] = EARLIER('你的表名'[Name]) && '你的表名'[Date] = MaxDate), '你的表名'[Position],, DESC, DENSE ) RETURN IF(CurrentDate = MaxDate && PositionRank = 1, 1, 0)
- 在报表视图的表格视觉对象中,添加筛选器:设置
IsLatestPosition等于1,即可只展示每个员工的最新职位行。
方法二:通过Power Query创建去重后的新表
- 打开Power Query编辑器,加载目标数据。
- 选中
Name列,点击开始选项卡中的分组依据,设置:- 分组依据:
Name - 新列名:
EmployeeRows - 操作:
所有行
- 分组依据:
- 添加自定义列,输入以下M语言代码:
LatestRow = let MaxDate = List.Max([EmployeeRows][Date]), FilteredByDate = Table.SelectRows([EmployeeRows], each [Date] = MaxDate), // 按职位层级降序排序,确保高级职位排在前面 SortedByPosition = Table.Sort(FilteredByDate,{{"Position", Order.Descending}}), GetFirstRow = Table.First(SortedByPosition) in GetFirstRow
- 点击
LatestRow列的展开按钮,选择需要保留的字段(Name、Project、Date、Position)。 - 关闭并应用更改,使用生成的新表创建报表即可。
补充说明
如果你的职位层级有明确的优先级规则(比如Junior < Engineer < Senior Engineer),可以创建一个辅助表存储职位与对应的等级值,关联主表后,在排序或排名时使用等级值替代职位名称,逻辑会更准确。
内容的提问来源于stack exchange,提问作者Abdu Malikov
相关产品推荐
相关产品推荐

