所以我有一张和员工一起的桌子。每个员工都有一个经理,使用PATH函数,我可以创建另一个列,该列将每个员工的管理跟踪到CEO (使用员工ID和经理ID)。例如,如果我的老板向首席执行官报告,我的员工路径将是“ceo ID --我的老板ID --我的ID--我的ID”或者“10001234
一旦我选择了这条路径,我需要能够根据人员列表(商业领袖)过滤我的数据。如果我选择商业领袖A,那么我想我的数据只包括那些在他们的员工路径中有商业领袖A的人,也就是那些最终向他汇报的人。我有一张独立的商界领袖的桌子。下面是我在做的事情:
为每个员工创建一个路径:empPath = PATH(EmployeeTable[Employee ID], EmployeeTable[Manager ID])
selectedLeader = IF(HASONEVALUE('LeaderTable'[Id]),VALUES('LeaderTable'[Id]),BLANK())
Filter =
var selectedLeader = IF(HASONEVALUE('LeaderTable'[Id]),VALUES('LeaderTable'[Id]),BLANK())
var empPath = PATH(EmployeeTable[Employee ID], EmployeeTable[Manager ID])
return IF(PATHCONTAINS(empPath, selectedLeader ),1,0)然而,这给出了错误:计算错误的度量:提供了一个多个值的表,其中需要一个单一的值。
我一直在尝试使用公式,在employeePath上使用值、FIRSTNONBLANK和其他聚合函数,但没有一个按需要工作。任何帮助都很感激!
发布于 2022-01-21 16:15:55
问题是,需要行上下文才能使PATH函数按预期工作。当您编写它时,它不知道您所指的EmployeeTable的哪一行是empPath。
试一试:
Filter =
VAR selectedLeader = SELECTEDVALUE ( 'LeaderTable'[Id] )
VAR FilteredTable =
FILTER (
EmployeeTable,
PATHCONTAINS (
PATH ( EmployeeTable[Employee ID], EmployeeTable[Manager ID] ),
selectedLeader
)
)
RETURN
IF ( ISEMPTY ( FilteredTable ), 0, 1 )如果首先在EmployeeTable上定义计算路径列,则可以提高效率。
Path = PATH ( EmployeeTable[Employee ID], EmployeeTable[Manager ID] )然后,该措施简化为:
Filter =
VAR selectedLeader = SELECTEDVALUE ( 'LeaderTable'[Id] )
VAR FilteredTable =
FILTER ( EmployeeTable, PATHCONTAINS ( EmployeeTable[Path], selectedLeader ) )
RETURN
IF ( ISEMPTY ( FilteredTable ), 0, 1 )https://stackoverflow.com/questions/70803715
复制相似问题