【问题标题】:Power BI generate future date with last known valuePower BI 生成具有最后一个已知值的未来日期
【发布时间】:2021-05-02 17:51:45
【问题描述】:
我需要帮助来生成具有 Power BI 中最后一个已知值的未来日期
我的数据如下:
| Date |
variable |
value |
| Dec-20 |
PC |
20000 |
| Dec-20 |
PLOB |
50000 |
| Jan-21 |
PC |
30000 |
| Jan-21 |
PLOB |
40000 |
| Feb-21 |
PC |
50000 |
| Feb-21 |
PLOB |
60000 |
| Mar-21 |
PC |
20000 |
| Mar-21 |
PLOB |
50000 |
| Apr-21 |
PC |
60000 |
| Apr-21 |
PLOB |
70000 |
我需要生成下表:
| Date |
variable |
value |
| Dec-20 |
PC |
20000 |
| Dec-20 |
PLOB |
50000 |
| Jan-21 |
PC |
30000 |
| Jan-21 |
PLOB |
40000 |
| Feb-21 |
PC |
50000 |
| Feb-21 |
PLOB |
60000 |
| Mar-21 |
PC |
20000 |
| Mar-21 |
PLOB |
50000 |
| Apr-21 |
PC |
60000 |
| Apr-21 |
PLOB |
70000 |
| May-21 |
PC |
60000 |
| May-21 |
PLOB |
70000 |
| : |
: |
: |
| Dec-21 |
PLOB |
60000 |
| Dec-21 |
PLOB |
70000 |
请协助我进行 DAX 计算
谢谢
【问题讨论】:
标签:
powerbi
dax
powerquery
【解决方案1】:
你可以试试下面的,步骤是
- 创建当前月份列表
- 计算最大月份
- 获取不同的类别
- 生成包含 2021 年所有未来月份的列表,并使用
ADDCOLUMNS 计算月份的开始。
- 使用
EXCEPT 仅获取未来几个月
- 使用不同的类别交叉加入未来几个月,这将为您提供所有可能的组合。
-
ADDCOLUMNS 到 CROSSJOIN 表,其中 [value] 是使用 [variable] 名称和您提供的表中的最大月份计算的。 VAR 用于访问行上下文,因此我们可以使用FILTER。
计算表
Future =
VAR PresentMonths =
ALL ( 'Table'[Date] )
VAR maxMonth =
MAXX ( 'Table', [Date] )
VAR DistinctCat =
ALL ( 'Table'[variable] )
VAR AllMonths =
SUMMARIZE (
ADDCOLUMNS (
CALENDAR ( DATE ( 2021, 01, 01 ), DATE ( 2021, 12, 31 ) ),
"MonthStart", DATE ( YEAR ( [Date] ), MONTH ( [Date] ), 01 )
),
[MonthStart]
)
VAR FutureMonths =
EXCEPT ( AllMonths, PresentMonths )
VAR FutureTable =
ADDCOLUMNS (
CROSSJOIN ( FutureMonths, DistinctCat ),
"value",
CALCULATE (
SUM ( 'Table'[value] ),
VAR localVariable = [variable]
RETURN
FILTER ( 'Table', [variable] = localVariable && [Date] = maxMonth )
)
)
RETURN
UNION ( 'Table', FutureTable )
输出
| Date |
variable |
value |
| December 2020 |
PLOB |
50000 |
| December 2020 |
PC |
20000 |
| January 2021 |
PC |
30000 |
| January 2021 |
PLOB |
40000 |
| February 2021 |
PC |
50000 |
| February 2021 |
PLOB |
60000 |
| March 2021 |
PC |
20000 |
| March 2021 |
PLOB |
50000 |
| April 2021 |
PC |
60000 |
| April 2021 |
PLOB |
70000 |
| May 2021 |
PC |
60000 |
| May 2021 |
PLOB |
70000 |
| June 2021 |
PLOB |
70000 |
| June 2021 |
PC |
60000 |
| July 2021 |
PC |
60000 |
| July 2021 |
PLOB |
70000 |
| August 2021 |
PC |
60000 |
| August 2021 |
PLOB |
70000 |
| September 2021 |
PC |
60000 |
| September 2021 |
PLOB |
70000 |
| October 2021 |
PC |
60000 |
| October 2021 |
PLOB |
70000 |
| November 2021 |
PC |
60000 |
| November 2021 |
PLOB |
70000 |
| December 2021 |
PC |
60000 |
| December 2021 |
PLOB |
70000 |