2017-03-16 54 views
0

問題的簡短版本:如何根據計算的度量創建排名?在DAX中排列度量值(而不是列值)?

問題背景: 我有一個表/查詢產生許多行每一位員工,與具有time taken值的每一行。

我想計算對各employee的平均時間,然後呈現表的行的每個employee,可見其name,平均time taken,和rank(基於time taken)。

做的第一部分,我創建了一個名爲AverageTimeLength並設置它等於測量:

AverageTimeLength = Average(Table_name[Column_name]) 

然後我編寫如下:

AverageTimeLength_employee = CALCULATE([AverageTimeLength], GROUPBY(Table_name, Table_name[EmployeeName])) 

這是兩個措施;我能夠在我創建的新表格圖表中插入第二個表格,但不幸的是,我無法在其上使用RANKX(),因爲度量值不是來自列。如果我嘗試創建一個從度量派生的列(即,column_name = [AverageTimeLength_employee]),我會收到錯誤指責循環推理的column_name

我想做的事似乎應該很簡單;有沒有人知道我可以創建一個簡單的排名參數,排序度量值?

回答

1

您可以創建Average措施,按如下方式使用它在Rank措施:

Average = AVERAGE([Time taken]) 

Rank = IF (
    HASONEVALUE (Table_Name[Name]), 
    RANKX (ALL (Table_Name[Name]), [Average]) 
) 

希望它能幫助。

+0

它絕對有幫助,謝謝。如果你不介意的話,我還有一些關於RANKX()函數的問題:(1)如果兩個僱員之間有聯繫,我怎麼能插入一個聯絡中斷器;(2)我注意到等級如果沒有其他我已經放置的過濾器,則完美地工作;我如何讓排名僅考慮被過濾的條目? – daOnlyBG

+0

@daOnlyBG,(1)可以自定義等級標準,既可以創建計算列並在rankx函數中使用它,也可以使用rankx _value_參數,而無需知道確定斷路器的邏輯,我們可以說。 (2)通過'ALLSELECTED(Table_Name [Name])'更改'ALL(Table_Name [Name])',可以使過濾變得更加敏感。 –

+0

我的確有一個類似「員工成功」的專欄。這將成爲決定因素 - 我必須看看如何在RANKX()函數中使用它。 – daOnlyBG