如何使用 DAX 计算对 powerBI 的投资 return?
How to calculate return of investment in powerBI using DAX?
大家好,
如上图所示,我有 2 列,Date
和 Cumsum P/L
。我想使用以下公式计算每月 return:
(Last Cumsum P/L of the month - First Cumsum P/L of the month) / First Cumsum P/L of the month
例如,2021 年 11 月,return 将为 (38.58-15.06)/15.06 = 3.42%
我想获取所有月份的 return 并将它们绘制在折线图中。理想情况下,如果可能的话,当我按天过滤数据时,return 将以天为基础,如果我按月或按年过滤数据,它将给我每月或每年 return。任何帮助或建议将不胜感激!
假设您的数据如下所示
Date
Amount
02 August 2021
19
05 August 2021
18
31 August 2021
25
01 September 2021
29
05 September 2021
23
30 September 2021
31
04 October 2021
30
05 October 2021
30
31 October 2021
31
01 November 2021
38
05 November 2021
38
30 November 2021
44
01 December 2021
45
05 December 2021
42
31 December 2021
42
我已经创建了一个 Return 计算,假设您有一个日历 table。我已经为日历 table 和下面的计算指定了 DAX。
计算的思路是获取月份值的第一天和月份值的最后一天,并使用它们来获取每个月的 return。
计算使用字段 Month
和 Month Truncated
.
作为 x 轴
最好使用日历 table,因为引擎完成的扫描次数相当少,相比之下,扫描事实 table。此外,当您使用日历 table.
时,您可以依赖 DAX 中的时间智能公式
DAX:日历 Table
Calendar =
ADDCOLUMNS (
CALENDAR ( MIN ( 'Table'[Date] ), MAX ( 'Table'[Date] ) ),
"Month", MONTH ( [Date] ),
"Month Truncated", DATE ( YEAR ( [Date] ), MONTH ( [Date] ), 01 )
)
DAX:Return计算
Return =
Return =
VAR CurrentMonth =
SELECTEDVALUE ( 'Calendar'[Month] )
VAR FirstDayMonth =
CALCULATE (
MIN ( 'Calendar'[Date] ),
'Calendar'[Month] = CurrentMonth,
'Calendar'[Date] IN VALUES ( 'Table'[Date] )
)
VAR LastDayMonth =
CALCULATE (
MAX ( 'Calendar'[Date] ),
'Calendar'[Month] = CurrentMonth,
'Calendar'[Date] IN VALUES ( 'Table'[Date] )
)
VAR FirstDayMonthValue =
CALCULATE ( MAX ( 'Table'[Amount] ), 'Table'[Date] = FirstDayMonth )
VAR LastDayMonthValue =
CALCULATE ( MAX ( 'Table'[Amount] ), 'Table'[Date] = LastDayMonth )
VAR ReturnCalculation =
DIVIDE ( LastDayMonthValue - FirstDayMonthValue, FirstDayMonthValue )
RETURN
ReturnCalculation
输出
日历 Table 作为日期 Table
第 1 步
第 2 步
大家好,
如上图所示,我有 2 列,Date
和 Cumsum P/L
。我想使用以下公式计算每月 return:
(Last Cumsum P/L of the month - First Cumsum P/L of the month) / First Cumsum P/L of the month
例如,2021 年 11 月,return 将为 (38.58-15.06)/15.06 = 3.42%
我想获取所有月份的 return 并将它们绘制在折线图中。理想情况下,如果可能的话,当我按天过滤数据时,return 将以天为基础,如果我按月或按年过滤数据,它将给我每月或每年 return。任何帮助或建议将不胜感激!
假设您的数据如下所示
Date | Amount |
---|---|
02 August 2021 | 19 |
05 August 2021 | 18 |
31 August 2021 | 25 |
01 September 2021 | 29 |
05 September 2021 | 23 |
30 September 2021 | 31 |
04 October 2021 | 30 |
05 October 2021 | 30 |
31 October 2021 | 31 |
01 November 2021 | 38 |
05 November 2021 | 38 |
30 November 2021 | 44 |
01 December 2021 | 45 |
05 December 2021 | 42 |
31 December 2021 | 42 |
我已经创建了一个 Return 计算,假设您有一个日历 table。我已经为日历 table 和下面的计算指定了 DAX。
计算的思路是获取月份值的第一天和月份值的最后一天,并使用它们来获取每个月的 return。
计算使用字段 Month
和 Month Truncated
.
最好使用日历 table,因为引擎完成的扫描次数相当少,相比之下,扫描事实 table。此外,当您使用日历 table.
时,您可以依赖 DAX 中的时间智能公式DAX:日历 Table
Calendar =
ADDCOLUMNS (
CALENDAR ( MIN ( 'Table'[Date] ), MAX ( 'Table'[Date] ) ),
"Month", MONTH ( [Date] ),
"Month Truncated", DATE ( YEAR ( [Date] ), MONTH ( [Date] ), 01 )
)
DAX:Return计算
Return =
Return =
VAR CurrentMonth =
SELECTEDVALUE ( 'Calendar'[Month] )
VAR FirstDayMonth =
CALCULATE (
MIN ( 'Calendar'[Date] ),
'Calendar'[Month] = CurrentMonth,
'Calendar'[Date] IN VALUES ( 'Table'[Date] )
)
VAR LastDayMonth =
CALCULATE (
MAX ( 'Calendar'[Date] ),
'Calendar'[Month] = CurrentMonth,
'Calendar'[Date] IN VALUES ( 'Table'[Date] )
)
VAR FirstDayMonthValue =
CALCULATE ( MAX ( 'Table'[Amount] ), 'Table'[Date] = FirstDayMonth )
VAR LastDayMonthValue =
CALCULATE ( MAX ( 'Table'[Amount] ), 'Table'[Date] = LastDayMonth )
VAR ReturnCalculation =
DIVIDE ( LastDayMonthValue - FirstDayMonthValue, FirstDayMonthValue )
RETURN
ReturnCalculation