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

Filter PowerBI:使用过滤器,但避免传播效果,filter,powerbi,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, ..) “龙卷风”是

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

'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小时),但过滤器也会传播到“公共员工计划”,并且我也会得到0小时的可用时间

我应该在分母中使用ALL with FILTER,但是如何访问时间线控件中选择的日期

有关数据模型,请参见下面的屏幕截图

我创建了一个新的AllDates(id,date)表,在日期列上有1:*与Tornado的关系和“公共雇员计划”

在我的页面中,我使用AllDates.date进行过滤,过滤会传播到Tornado和public“public employee_schedule”

最后,我使用格式>编辑交互,以避免任何其他不必要的过滤器/切片器影响我的度量(显示在KPI卡中)

另一个解决方案可以是类似的(WorkOne是Tornado,Hoursavable是“公共雇员计划”):

billability=
明特变种=
计算(最小值(工作日[日期]),所有选定值(工作日))
VAR MaxDate=
计算(最大值(工作日[日期]),所有选定值(工作日))
返回
(
总和(工作时间[小时])
/算计(
总和(可用小时[可用小时],
滤器(
全部(可用小时数),
小时可用[日期]>=分钟

&&可用小时[日期]如何关联
WorkDone
HoursAvailable
表?可能是按员工id?您是否还有日历表。添加有关您所追求的可视化的更多详细信息以帮助您。添加了模式。是的,它们是按员工id连接的。正如我所说,可视化有一个过滤hoursailable.date和sh的日期切片器ows图表,如每个项目的小时数等。但由于WorkOne和HoursAvailable是“相关”的,它也会间接过滤HoursAvailable。这会导致在Tornado表中计算可计费性度量时出现问题。您是否使用
Tornado.date
列或
schedule.date
来过滤图表?注意如果使用Tornado.date yo除非您有一个日历/日期表来关联这两个列,否则无法筛选日程表中的行。我不知道,您的图表与您对表和字段的描述不相似。谢谢@alejandrozuleta这是个好主意!
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
                )
            )
    )