2017-07-03 251 views
0

我有一個包含資源名稱,資源所有者,項目名稱,項目經理,工作量的表格。 對於每個資源所有者,我想計算借出的努力(業主資源在所有者項目以外的項目中所花費的努力)和借來的努力(除了項目所有者之外,所有者在其他項目中的資源所花費的努力)。Power BI:計算不正常

For e.g., Resource Owner = X 
Project Manager = AllExcept(X) 
Sum(Effort) = Loaned Out Hours 

Resource Owner = AllExcept(X) 
Project Manager = X 
Sum(Effort) = Borrowed. 

爲了計算借出小時我用這DAX式 -

Loaned = IF(ISBLANK(CALCULATE(SUM('All_Activity Data'[Logged Effort]), FILTER('All_Activity Data','All_Activity Data'[Project Manager] <> 'All_Activity Data'[Resource Owner]))),0,CALCULATE(SUM('All_Activity Data'[Logged Effort]),FILTER('All_Activity Data','All_Activity Data'[Project Manager] <> 'All_Activity Data'[Resource Owner]))) 

用於計算借我用的 -

Borrowed = IF(ISBLANK(CALCULATE(SUM('All_Activity Data'[Logged Effort]),FILTER('All_Activity Data','All_Activity Data'[Project Manager] <> 'All_Activity Data'[Resource Owner]), FILTER('All_Activity Data','All_Activity Data'[Project Manager] = 'All_Activity Data'[Resource Owner]))),0,CALCULATE(SUM('All_Activity Data'[Logged Effort]),FILTER('All_Activity Data','All_Activity Data'[Project Manager] <> 'All_Activity Data'[Resource Owner]), FILTER('All_Activity Data','All_Activity Data'[Project Manager] = 'All_Activity Data'[Resource Owner]))) 

借出小時正確計算而不是借來的。任何幫助,將不勝感激。

下面是示例數據:

RN  Eff  PN P_M RO 
NAME 1 1.50 A O X 
NAME 2 8.00 B N S 
NAME 1 5.50 C N S 
NAME 2 1.50 D S S 
NAME 1 5.00 E X S 
NAME 2 8.00 F N N 
NAME 1 4.00 G L X 
NAME 2 4.00 H L X 
NAME 1 0.25 I X N 
NAME 2 0.25 G O X 
NAME 1 0.25 A X D 
NAME 2 6.75 B N X 
NAME 1 0.50 C X X 
NAME 2 8.00 D N L 
NAME 1 0.17 E D D 
NAME 2 2.26 F D D 
NAME 1 1.58 G L D 
NAME 2 2.50 H D D 
NAME 2 0.58 I D D 
NAME 1 0.33 G D D 
NAME 2 0.34 A D D 
NAME 1 0.25 B D D 
NAME 2 6.00 C D S 
NAME 1 0.30 D N S 
NAME 1 8.00 E N N 
NAME 2 2.00 F S S 
NAME 1 4.50 G S S 
NAME 2 1.50 H S S 
NAME 1 2.00 I S S 
NAME 2 1.50 G S S 
NAME 2 4.50 A S S 
NAME 2 8.00 B S S 
NAME 2 8.00 C S L 
NAME 2 8.00 D N S 
NAME 2 8.00 E S L 
NAME 2 8.00 F S L 
NAME 2 8.00 G O X 
NAME 2 1.25 H L L 
NAME 2 2.75 I L L 
NAME 1 0.75 G L L 
NAME 1 1.50 A L L 
NAME 1 0.75 B O L 
NAME 1 1.25 C O X 
NAME 1 0.50 D N X 
NAME 1 1.00 E X X 
NAME 1 2.00 F O X 
NAME 1 2.50 G S N 
NAME 1 7.00 H S N 
NAME 1 1.50 I L N 
NAME 2 6.50 G L N 
NAME 2 8.00 A N S 
NAME 2 8.00 B N X 
NAME 2 7.50 C L S 
NAME 1 3.25 D N N 
NAME 1 2.25 E N N 
NAME 1 0.75 F N N 
NAME 2 0.75 G N N 
NAME 1 1.00 H L X 
NAME 1 4.00 I S X 
NAME 1 3.00 G N X 
NAME 2 8.00 A L L 
NAME 1 6.00 B N N 
NAME 1 0.50 C N N 
NAME 1 0.50 D N N 
NAME 2 7.00 E N X 
NAME 1 0.25 F O X 
NAME 1 0.50 G O X 
NAME 1 0.25 H X X 

在這種區分 借出對於X PM是 - 52 在借用爲 - 5.5 Loaned out

Borrowedin

+0

能否請您澄清究竟是什麼問題呢? https://stackoverflow.com/help/mcve – user5226582

+0

計算後的數據與原始excel表單不匹配。計算度量公式不起作用。 – Sonali

+0

你可以添加一個例子嗎?查看樣本數據,結果和預期結果將非常有用。 – user5226582

回答

0

有3種類型努力在你的問題:

最簡單的類型的電子商務ffort是「不借貸或借貸的努力」 - 你關心的經理既是資源所有者又是項目經理。他們正在使用他們管理的項目管理的資源)。

下一種努力是「借貸努力」 - 您關心的經理是資源所有者而不是項目經理(即經理的資源正在其他人的項目中使用)。

最後一種努力是「借來的努力」 - 您關心的經理是項目經理,但不是資源所有者(即他們在他們的項目中使用別人的資源)。

您已經正確定義了借出的工作,但它是基於資源所有者是您關心的經理的假設。事實上,您的貸款努力計算是完全正確的借用努力太,除非你需要通過項目經理而不是資源所有者顯示錶(這是因爲項目經理借用和資源所有者貸款 - 但否則它是相同的計算)。

Loaned is Borrowed

你的問題的實質,因此,不會與計算有問題,而是因爲要顯示「借」與「不借」的數量並排側同一個人。

爲了實現這個目標,我建議您製作一張單獨的管理員表格,您可以計算借用和借出的數量。做這件事的主要原因之一是因爲經理可能會借款但永遠不會出借。如果您從資源所有者(借貸)的前提開始,那麼借貸人永遠不會出借的經理將永遠不會出現在您的結果中。

我把這個表叫做DimManager,帶有一列管理器。你顯然可以改變這一點。我沒有涉及此表All_Activity數據:

DimManager Table

然後,採取的措施,我開始不貸款或借來的,在這裏我想經理既對項目經理和資源擁有者:

Not Loaned or Borrowed = 
SUMX (
    'DimManager', 
    CALCULATE (
     SUMX (
      FILTER (
       'All_Activity Data', 
       'All_Activity Data'[Project Manager] = MAX ('DimManager'[Manager]) 
        && 'All_Activity Data'[Resource Owner] = MAX ('DimManager'[Manager]) 
      ), 
      'All_Activity Data'[Logged Effort] 
     ) 
    ) 
) 

從內向外工作,FILTER是做兩個不相關的表之間的連接。在這種情況下,我希望管理者既是項目經理又是資源所有者。嵌套的SUMX(CALCULATE(SUMX)是這樣的,當計算一個列總和時,它總和每個管理器的結果,如果沒有這個,測量將使用MAX(管理器)作爲列總數,使得列總數與。在您的樣本數據管理器X我學到了這一招馬特 - 阿林頓:https://exceleratorbi.com.au/double-calculate-solves-sumx-problem/

爲了您的借出和借入的計算,他們是完全同上,只是不要說你想同時你的資源所有者和項目經理匹配你的經理,他們中的一個不匹配你的經理:

Loaned = 
SUMX (
    'DimManager', 
    CALCULATE (
     SUMX (
      FILTER (
       'All_Activity Data', 
       'All_Activity Data'[Project Manager] <> MAX ('DimManager'[Manager]) 
        && 'All_Activity Data'[Resource Owner] = MAX ('DimManager'[Manager]) 
      ), 
      'All_Activity Data'[Logged Effort] 
     ) 
    ) 
) 

'

Borrowed = 
SUMX (
    'DimManager', 
    CALCULATE (
     SUMX (
      FILTER (
       'All_Activity Data', 
       'All_Activity Data'[Project Manager] = MAX ('DimManager'[Manager]) 
        && 'All_Activity Data'[Resource Owner] <> MAX ('DimManager'[Manager]) 
      ), 
      'All_Activity Data'[Logged Effort] 
     ) 
    ) 
) 

這導致下面的最終結果:

Final Result

+0

我可以不在我的All_Activity數據表中使用經理名稱嗎?當我使用All_Activity數據表的資源所有者作爲經理時,借用變爲空白。 – Sonali

+0

您的*借用的*方程在問題中存在矛盾。如果項目經理不等於資源經理**並且項目經理等於資源經理,那麼您正在總結努力。由於任何行都不可能相等而且不相等,因此結果將始終爲零。 – Leonard

+0

從理論上講,有一種方法可以根據資源所有者獲取一個*借用*等式來工作。計算將是* Loaned *等式,但您需要覆蓋當前資源所有者的上下文過濾器,而是計算借給當前資源所有者的其他資源所有者的借出金額。然而,正如我在答案中所說的那樣,這樣做會減少不是資源所有者的項目經理所做的任何借貸。 – Leonard