我试图计算员工花在实际项目上的时间:
'billability' = [total hours worked on projects] / [total hours that the employee was available]
我给出了一个类似的架构:
Tornado = (employee_id, date, project_id, hours, ..)
'public employee_schedule' = (employee_id, date, hours, ..)
'龙卷风'是记录花费时间的表。 ' public employee_schedule'是记录每位员工每天可用时间的表格。
因此,为了计算可计算性,我在Tornado表中有一个度量:
billability= Sum(Tornado.hours)/Sum('public employee_schedule'.hours)
在powerBi桌面上,我有一个页面可以对Tornado进行一系列分析,它包含一个与Tornado.date相关的日期过滤器(时间轴控件)
问题:选择日期范围后,Tornado上的行将被过滤,如果员工在这些日期没有完成任何工作,则不会选择任何内容(0小时工作),但过滤器也会传播到&#39 ; public employee_schedule'我也可以在0小时内获得。
我应该在分母中使用ALL with FILTER,但是如何访问时间轴控件中选择的日期?
请参阅下面的截图了解数据模型。
答案 0 :(得分:0)
我创建了一个新的AllDates(id,date)表,与Tornado的关系为1:*,日期列为'public employee_schedule'。
在我的页面中,我使用AllDates.date进行过滤,传播到Tornado和公共'public employee_schedule'。
最后我使用Format>编辑交互以避免影响我的度量的任何其他不需要的过滤器/切片器(显示在KPI卡中)。
另一个解决方案可能是这一行(WorkDone是Tornado,HoursAvailable是'public employee_schedule'):
billability =
VAR MinDate =
CALCULATE ( MIN ( WorkDone[date] ), ALLSELECTED ( WorkDone ) )
VAR MaxDate =
CALCULATE ( MAX ( WorkDone[date] ), ALLSELECTED ( WorkDone ) )
RETURN
(
SUM ( WorkDone[hours] )
/ CALCULATE (
SUM ( HoursAvailable[available_hours] ),
FILTER (
ALL ( HoursAvailable ),
HoursAvailable[date] >= MinDate
&& HoursAvailable[date] <= MaxDate
)
)
)