Power BI 使用最后已知值生成未来日期
Power BI generate future date with last known value
我需要帮助才能使用 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
我需要生成以下 table:
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计算
谢谢
你可以试试下面的方法,步骤是
- 创建当前月份列表
- 计算最大月份
- 获取不同的类别
- 生成 2021 年所有未来月份的列表,并以
ADDCOLUMNS
月份开始计算。
- 使用
EXCEPT
仅获取未来月份
- 将未来几个月与不同的类别交叉连接,这将为您提供所有可能的组合。
ADDCOLUMNS
到 CROSSJOIN
table,其中 [value]
是使用 [variable]
名称和 table 中的最大月份计算的你提供。 VAR
用于访问行上下文,所以我们可以使用FILTER
.
计算Table
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
我需要帮助才能使用 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 |
我需要生成以下 table:
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计算
谢谢
你可以试试下面的方法,步骤是
- 创建当前月份列表
- 计算最大月份
- 获取不同的类别
- 生成 2021 年所有未来月份的列表,并以
ADDCOLUMNS
月份开始计算。 - 使用
EXCEPT
仅获取未来月份
- 将未来几个月与不同的类别交叉连接,这将为您提供所有可能的组合。
ADDCOLUMNS
到CROSSJOIN
table,其中[value]
是使用[variable]
名称和 table 中的最大月份计算的你提供。VAR
用于访问行上下文,所以我们可以使用FILTER
.
计算Table
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 |