如何解决如何在 PowerBI 中使用 DAX 创建动态子表
我有这张桌子:
Order | Total | FirstPayment | Months
1 | 1000 | 2021-01-01 | 2
2 | 600 | 2021-02-01 | 3
我需要用分期付款创建另一个表,如下所示:
Month | Order | Value
2021-01-01 | 1 | 500
2021-02-01 | 1 | 500
2021-02-01 | 2 | 200
2021-03-01 | 2 | 200
2021-04-01 | 2 | 200
因此,我想为每个月的付款创建一个包含一行的子表。
拜托,你能帮忙吗?
解决方法
根据我的评论,我实际上会这样做:
创建跨越两个范围之间所有日期的日期表。您实际上可以过滤它以仅包含相关日期以获得更好的性能,但我没有打扰(这是一个表格公式):
Payments = CALENDAR(MIN(Orders[FirstPayment]),MAXX(Orders,EDATE(Orders[FirstPayment],Orders[Months])))
创建一个可以显示相关日期的适当值的度量:
Payment amount =
SUMX (
Payments,VAR d =
DAY ( Payments[Date] )
RETURN
SUMX (
FILTER (
Orders,DAY ( Orders[FirstPayment] )
== d
&& Payments[Date] <= EDATE ( Orders[FirstPayment],Orders[Months] -1 )
&& Payments[Date] >= Orders[FirstPayment]
),[Total] / [Months]
)
)
结果 - 基于 Orders 表中的 Order 和 Payments 表中的 Date:
编辑
当然也可以按照你的要求去做。您必须结合这两个公式来创建这样的计算表(以下是您在选择新建表时应用的表公式):
Installments =
SELECTCOLUMNS (
FILTER (
CROSSJOIN (
CALENDAR (
MIN ( Orders[FirstPayment] ),MAXX ( Orders,EDATE ( Orders[FirstPayment],Orders[Months] ) )
),Orders
),[Date] >= [FirstPayment]
&& DAY ( [Date] ) = DAY ( [FirstPayment] )
&& [Date]
<= EDATE ( [FirstPayment],[Months] - 1 )
),"Date",[Date],"Order",[Order],"Value",[Total] / [Months]
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。