你的问题中有3种类型的努力:
最简单的工作类型是“非借出或借用的工作” - 您关心的经理既是资源所有者又是项目经理(即他们在他们管理的项目上使用他们管理的资源)。
下一种类型的工作是“借用工作”——您关心的经理是资源所有者,而不是项目经理(即经理的资源正在用于其他人的项目)。
最后一种类型的工作是“借来的工作”——您关心的经理是项目经理,而不是资源所有者(即他们在项目中使用其他人的资源)。
您已经正确定义了借出的工作量,但它是基于资源所有者是您关心的经理的假设。确实,你的借出的努力计算完全正确借来的努力也是如此,除非您需要按项目经理而不是资源所有者显示表格(这是因为项目经理借入而资源所有者借出 - 但除此之外,计算结果相同)。
因此,问题的本质不是计算问题,而是因为您想并排显示同一个人的“借用”和“借出”号码。
为了实现这一目标,我建议建立一个单独的、重复数据删除的经理表,您可以计算借入和借出的数量。这样做的主要原因之一是经理可以借钱但从不放贷。如果您以资源所有者(出借人)为前提,则借入但从不出借的管理者将永远不会出现在您的结果中。
我将此表称为 DimManager,只有一列Manager。显然你可以改变这个。我做到了not将此表与 All_Activity 数据关联:
然后,对于措施,我从不借或借开始,我希望经理既是项目经理又是资源所有者:
Not Loaned or Borrowed =
SUMX (
'DimManager',
CALCULATE (
SUMX (
FILTER (
'All_Activity Data',
'All_Activity Data'[Project Manager] = MAX ( 'DimManager'[Manager] )
&& 'All_Activity Data'[Resource Owner] = MAX ( 'DimManager'[Manager] )
),
'All_Activity Data'[Logged Effort]
)
)
)
FILTER 从内到外工作,负责两个不相关的表之间的连接。在本例中,我希望经理既是项目经理又是资源所有者。嵌套 SUMX(CALCULATE(SUMX) 的作用是,在计算列总计时,它将每个单独管理器的结果相加。如果没有此功能,度量将使用 MAX(Manager) 作为列总计,使列总计与样本数据中的经理 X。我从 Matt Allington 那里学到了这个技巧:https://exceleratorbi.com.au/double-calculate-solves-sumx-problem/ https://exceleratorbi.com.au/double-calculate-solves-sumx-problem/
对于您的借出和借用计算,它们与上面完全相同,只不过不是说您希望资源所有者和项目经理都与您的经理匹配,而是其中之一与您的经理不匹配:
Loaned =
SUMX (
'DimManager',
CALCULATE (
SUMX (
FILTER (
'All_Activity Data',
'All_Activity Data'[Project Manager] <> MAX ( 'DimManager'[Manager] )
&& 'All_Activity Data'[Resource Owner] = MAX ( 'DimManager'[Manager] )
),
'All_Activity Data'[Logged Effort]
)
)
)
'
Borrowed =
SUMX (
'DimManager',
CALCULATE (
SUMX (
FILTER (
'All_Activity Data',
'All_Activity Data'[Project Manager] = MAX ( 'DimManager'[Manager] )
&& 'All_Activity Data'[Resource Owner] <> MAX ( 'DimManager'[Manager] )
),
'All_Activity Data'[Logged Effort]
)
)
)
最终结果如下: