2016-10-03 61 views
-1

我試圖計算實際項目的員工花費多少時間:PowerBI:使用過濾器,但要避免propoagation效果

'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'是記錄每位員工每天可用小時數的表格。

所以計算billability,我有龍捲風表一招:

billability= Sum(Tornado.hours)/Sum('public employee_schedule'.hours) 

在powerBi桌面上,我有一個頁面,我做了一系列的龍捲風分析,它包括一個日期過濾器(時間軸控制)與Tornado.date綁定

問題:在選擇日期範圍後,會對Tornado上的行進行過濾,如果在這些日期中員工沒有完成任何工作,則不會選擇任何內容(0小時工作) ,但過濾器也會傳播到'public employee_schedule',並且我也可以獲得0小時的可用時間。

我應該在分母中使用ALL和FILTER,但是如何訪問Timeline控件中選擇的日期?

查看下面的屏幕截圖,瞭解數據模型。

DB Schema.

+0

如何都與'WorkDone'和'HoursAvailable'表?也許通過employee_id?你也有一個日曆表。添加更多關於您之後的可視化的詳細信息,以幫助您。 –

+0

添加了架構。是的,他們通過employee_id連接。就像我說的,可視化具有一個日期切片機,可以過濾HoursAvailable.date並顯示每個項目的小時數等圖表等。 但由於WorkDone和HoursAvailable是「相關的」,因此它還間接地過濾了HoursAvailable。計算Tornado表中Billing性度量的問題 – olix20

+1

您是否使用'Tornado.date'列或'schedule.date'來過濾圖表?請注意,如果您使用Tornado.date,則無法過濾日程表中的行,除非您有一個日曆/日期表來關聯這兩列。 –

回答

0

我創建了一個新的AllDates(ID,日期)表1:*與龍捲風有關日期列關係和 '公共employee_schedule'。

在我的頁面中,我使用AllDates.date進行過濾,它傳播給Tornado和public'public employee_schedule'。

最後,我使用格式>編輯交互來避免任何其他不需要的篩選器/切片器影響我的度量(顯示在KPI卡中)。

另一種解決辦法是沿着這條線的東西(WorkDone被龍捲風和HoursAvailable是 '公共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 
       ) 
      ) 
    )