2015-08-15 38 views
4

我試圖通過Power View查看各個時間點上所有賬戶餘額的總和,以便我可以看到總數如何變化。DAX動態總功率查看

我沒有交易歷史記錄(加/減),只有在每個帳戶的特定時間點上的「餘額」。

我的數據的簡化的例子是:

Account Date Balance
a111 01 January 2015 100
a111 01 February 2015 150
b222 01 March 2015 200
c333 01 March 2015 300
b222 01 May 2015 150
d444 01 June 2015 400

據我所知,我需要創建一個度量來爲每個「帳戶」生成一個動態排名,按照最近的日期排序。然後,我應該可以創建第二個度量來累計排名等於1的每個帳戶。

在問題PowerPivot DAX - Dynamic Ranking Per Group (Min Per Group)中討論了此問題的類似示例,但我似乎無法得到此顯示我想要如何在Power View中的線圖上。

我要顯示的折線圖(讓圖理清失蹤日期)什麼:

Date Balance
01 Jan 2015 100 -- Account a111 only
01 Feb 2015 150 -- Account a111 only, but the new value
01 Mar 2015 650 -- Accounts a111 (latest), b222 and c333
01 May 2015 600 -- As above, but account b222 is updated
01 Jun 2015 1000 -- Latest values for all accounts

然而,什麼我目前看到的是:

Date Balance
01 Jan 2015 100 -- Sum of Balances matching this date
01 Feb 2015 150 -- As above
01 Mar 2015 500 -- As above
01 May 2015 150 -- As above
01 Jun 2015 400 -- As above

的問題,據我所知,是在每個數據點上圖表中,'過濾器上下文'減少到僅匹配日期的行,而我需要在該日期之前的所有行,'排名'爲1.

僅供參考,我使用Excel 2013和數據最終通過Power Query(從SharePoint提取數據)進入,所以如果需要的話,我可以在那裏工作一些魔法生成與DAX MAX()函數一起使用的數字「組ID」,因爲它似乎不喜歡字符串)。

我希望這不是令人困惑,並提前感謝任何幫助。

回答

1

對此的解決方案是有一個單獨的日期維度表,因此可以獨立計算每月的餘額,而不考慮事實表。

假設您有一個名爲Date的日期表。

因此,首先創建基本措施

[Total Balance] := SUM(FactTable[Balance]) 

接下來我們計算的第一個月在事實表中作爲地板使用通過我們的日期表值期待。

[First Ever Balance Date] := FIRSTDATE(ALL(FactTable[Date])) 

現在我們決定與在背景下,第一個月和當月的日期範圍的平衡的最後一個日期:

[Last Balance Date] := 
LASTNONBLANK (
    DATESBETWEEN (Date[Date], [First Ever Balance Date], MAX (Date[Month])), 
    [Total Balance] 
) 

所以考慮A111月5/1/2015。這項措施將查找所有日期1/1/2015(我們[First Ever Balance Date])和2015年5月1日(在MAX Date[Month])之間,具有平衡找到最後一行,並返回相應的Date[Date]2/1/2015)。

此措施將在帳戶初始餘額前的任何月份返回BLANK。日期過濾使用BLANKS不起作用,所以我們應該用[第一次資產負債表日]替換這些空白值,以確保該帳戶的收支狀態仍然會返回0。

[Last Balance Date Remove Blanks] := 
IF (
    ISBLANK ([Last Balance Date]), 
    [First Ever Balance Date], 
    [Last Balance Date] 
) 

現在,我們可以計算出通過查找餘額爲Last Balance Date Remove Blanks

[Last Balance] := 
CALCULATE (
    [Total Balance], 
    DATESBETWEEN (Date[Date], [Last Balance Date Remove Blanks], 
    [Last Balance Date Remove Blanks]) 
) 

的最後,我們使用跨賬戶SUMX增加了他們的個人Last Balance量的任何賬戶的任何月份的當前餘額。

[Account Total Balance] := SUMX(ALL(FactTable[Account]), [Last Balance]) 

現在,在您的數據透視表,你只要把日期[月]的行[賬戶餘額合計]作爲度量。請注意,這將包含您的示例集中沒有像2015年4月1日那樣的事實錶行的月份。如果要排除這些,添加其他中間措施,算你的事實錶行:

[Fact Table Row Count] := COUNTROWS (FactTable) 

,然後創建一個度量返回BLANK()如果[事實錶行計數]是空白的(),否則[賬戶總餘額]

[Account Balance Hide Rows] := 
IF (
    ISBLANK ([Fact Table Row Count]), 
    BLANK(), 
    [Account Balance] 
) 
+0

謝謝凱爾,有點被捆綁我還沒有能夠嘗試這個,但我感謝您的詳細迴應。 –