PowerBI:使用过滤器但避免传播效果

时间:2016-10-03 08:03:43

标签: filter powerbi

我试图计算员工花在实际项目上的时间:

'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,但是如何访问时间轴控件中选择的日期?

请参阅下面的截图了解数据模型。

DB Schema.

1 个答案:

答案 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
                )
            )
    )