我需要一个计算所得的列(因为它将在切片器中使用),该列返回员工的最新主管。
数据样本(表“性能”):
EMPLOYEE | DATE | SUPERVISOR
--------------------------------------------
Jim | 2018-11-01 | Bob
Jim | 2018-11-02 | Bob
Jim | 2018-11-03 | Bill
Mike | 2018-11-01 | Steve
Mike | 2018-11-02 | Gary
所需的输出:
EMPLOYEE | DATE | SUPERVISOR | LAST SUPER
---------------------------------------------------------------
Jim | 2018-11-01 | Bob | Bill
Jim | 2018-11-02 | Bob | Bill
Jim | 2018-11-03 | Bill | Bill
Mike | 2018-11-01 | Steve | Gary
Mike | 2018-11-02 | Gary | Gary
我尝试使用
LAST SUPER =
LOOKUPVALUE (
Performance[SUPERVISOR],
Performance[DATE], MAXX ( Performance, [DATE] )
)
但是我得到了错误:
“性能”列中的计算错误[]:多个表 在期望使用单个值的地方提供了值。
进行更多研究后,看来这种方法从一开始就注定要失败。根据{{3}},搜索值不能引用正在搜索的同一表中的任何列。但是,即使当我将搜索值更改为TODAY()
或将一个静态日期作为测试时,我也遇到了关于多个值的相同错误。 MAXX()
还将返回整个表中的最长日期,而不仅仅是返回给该员工。
我想知道这是否是很多问题,所以我回到Power Query,复制原始查询,由EMPLOYEE分组以获得MAX(DATE),将两个字段与原始查询进行匹配,以在MAX上获得SUPERVISOR (DATE),可以将其视为常规查找表。虽然可以正常工作,但刷新速度明显变慢也就不足为奇了。
我无法确定我是否过于复杂,过度简化,或者只是采用任何一种方法都大大超出了标准,但我将不胜感激。
我想知道的是:
答案 0 :(得分:1)
LOOKUPVALUE
给出该特定错误的原因是它正在对整个表进行查找,而不仅是与该特定员工相关联的行。因此,如果您有多个主管匹配相同的最大日期,那么您就会遇到问题。
如果您想为此使用LOOKUPVALUE
函数,则建议以下操作:
Last Super =
VAR EmployeeRows =
FILTER( Performance, Performance[Employee] = EARLIER( Performance[Employee] ) )
VAR MaxDate = MAXX( EmployeeRows, Performance[Date] )
RETURN
LOOKUPVALUE(
Performance[Supervisor],
Performance[Date], MaxDate,
Performance[Employee], Performance[Employee]
)
这里有两个主要区别。
EmployeeRows
)的行获取最长日期。Employee
包含在查找功能中,以便
仅匹配合适的员工。有关其他可能的解决方案,请参见以下问题: