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

Power BI:如何基于员工维度的最大日期生成最新职位计算列?

解决Power BI计算员工最后职位的DAX问题

你的DAX代码逻辑存在问题,没有正确限定“每个员工的最晚日期”,导致计算列结果和原职位列完全一致。

原代码的问题分析

  1. MaxDate变量未针对当前员工筛选:默认计算的是整个表的最大日期,而非当前员工的最晚日期
  2. EEID变量获取的是当前行的员工ID,但结合未正确筛选的日期,导致FILTER逻辑无法精准定位到员工的最后职位行,最终返回当前行的职位值

修正后的DAX代码

方案一:使用CALCULATE筛选

Current Title = 
VAR CurrentEmployee = 'Terms FY23'[Employee History.Employee]
VAR MaxDateForEmployee = 
    CALCULATE(
        MAX('Terms FY23'[Employee History.Date]),
        'Terms FY23'[Employee History.Employee] = CurrentEmployee
    )
RETURN
    CALCULATE(
        MAX('Terms FY23'[Employee History.Title]),
        'Terms FY23'[Employee History.Employee] = CurrentEmployee,
        'Terms FY23'[Employee History.Date] = MaxDateForEmployee
    )

方案二:使用LOOKUPVALUE(更直观)

Current Title = 
VAR CurrentEmployee = 'Terms FY23'[Employee History.Employee]
VAR MaxDateForEmployee = 
    CALCULATE(
        MAX('Terms FY23'[Employee History.Date]),
        'Terms FY23'[Employee History.Employee] = CurrentEmployee
    )
RETURN
    LOOKUPVALUE(
        'Terms FY23'[Employee History.Title],
        'Terms FY23'[Employee History.Employee], CurrentEmployee,
        'Terms FY23'[Employee History.Date], MaxDateForEmployee
    )

修正逻辑说明

  1. 先捕获当前行的员工ID,明确计算上下文为单个员工
  2. 基于当前员工筛选,计算该员工的最晚日期
  3. 最后通过员工ID+最晚日期的组合筛选,返回对应的职位值

以你的示例数据为例,John Adams的最晚日期是2/15/2023,职位为Crew Leader,修正后的计算列会在所有John Adams的行中统一返回Crew Leader,而非原列的不同值。

内容的提问来源于stack exchange,提问作者Mark Girgis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24