Power BI:使用过滤器但避免传播效应
PowerBI: Use filter but avoid propoagation effect
我正在尝试计算员工在实际项目上花费的时间:
'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, ..)
'Tornado' 是记录花费时间的 table。 'public employee_schedule' 是 table 记录每位员工每天的可用小时数。
所以为了计算可计费性,我在 Tornado 中有一个度量 table:
billability= Sum(Tornado.hours)/Sum('public employee_schedule'.hours)
在 powerBi 桌面中,我有一个页面,我在其中对 Tornado 进行了一系列分析,它包括一个与 Tornado.date
绑定的日期过滤器(时间轴控件)
问题:选择日期范围后,Tornado 上的行会被过滤,如果员工在这些日期没有完成任何工作,则不会选择任何内容(工作 0 小时),但过滤器也会传播到 'public employee_schedule' 可用小时数也为 0。
我应该在分母中使用 ALL 和 FILTER,但是如何访问在时间轴控件中选择的日期?
有关数据模型,请参见下面的屏幕截图。
我创建了一个新的 AllDates(id, date) table 与 Tornado 的关系为 1:* 并且日期列为 'public employee_schedule'。
在我的页面中,我使用 AllDates.date 进行过滤,它传播到 Tornado 和 public 'public employee_schedule'。
最后,我使用“格式”>“编辑交互”来避免任何其他不必要的 filters/slicers 影响我的衡量标准(显示在 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
)
)
)
我正在尝试计算员工在实际项目上花费的时间:
'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, ..)
'Tornado' 是记录花费时间的 table。 'public employee_schedule' 是 table 记录每位员工每天的可用小时数。
所以为了计算可计费性,我在 Tornado 中有一个度量 table:
billability= Sum(Tornado.hours)/Sum('public employee_schedule'.hours)
在 powerBi 桌面中,我有一个页面,我在其中对 Tornado 进行了一系列分析,它包括一个与 Tornado.date
绑定的日期过滤器(时间轴控件)问题:选择日期范围后,Tornado 上的行会被过滤,如果员工在这些日期没有完成任何工作,则不会选择任何内容(工作 0 小时),但过滤器也会传播到 'public employee_schedule' 可用小时数也为 0。
我应该在分母中使用 ALL 和 FILTER,但是如何访问在时间轴控件中选择的日期?
有关数据模型,请参见下面的屏幕截图。
我创建了一个新的 AllDates(id, date) table 与 Tornado 的关系为 1:* 并且日期列为 'public employee_schedule'。
在我的页面中,我使用 AllDates.date 进行过滤,它传播到 Tornado 和 public 'public employee_schedule'。
最后,我使用“格式”>“编辑交互”来避免任何其他不必要的 filters/slicers 影响我的衡量标准(显示在 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
)
)
)