PowerBI DAX 度量:未来期间的销售额总和,其中数据提供单个值和开始日期

问题描述 投票:0回答:1

我正在使用 Salesforce 的数据进行收入预测,该数据为每个机会 [Id] 提供结束日期和每月收入的单个值(如果可以使代码更易于阅读/理解,也可以使用年度收入) .

感谢您花时间解决这个问题并提供帮助。

模型中的数据:

机会[ID] 机会[截止日期] 机会[每月加权收入]
A 2024-09-20 10
B 2024-11-12 40
C 2024-10-24 20

注意:机会[关闭日期]与“日历”[日期]相关

需求输出#1:

机会[ID] 24 年 7 月 24 年 8 月 24 年 9 月 24 年第 2 季度 10月24日 24 年 11 月 24 年 12 月 24 年第 4 季度 24 财年
A 0.00 0.00 10.00 10.00 10.00 10.00 10.00 30.00 40.00
B 0.00 0.00 0.00 0.00 0.00 40.00 40.00 80.00 80.00
C 0.00 0.00 0.00 0.00 20.00 20.00 20.00 60.00 60.00
总计 0.00 0.00 10.00 10.00 30.00 70.00 70.00 170.00 180.00

需求输出#2:

注意:商机 A 的值对 24 年第 4 季度的总数有所贡献,尽管它在 24 年第 3 季度的结束日期不在当前过滤器上下文中。其他过滤器例如机会[状态]仍然需要过滤报告。

机会[ID] 24 年第 4 季度 24 财年
总计 170.00 170.00

当前代码:

我当前的度量在以机会 [Id] 和月份列呈现在表格视觉效果中时重复每月加权收入,但是,当我删除机会 [Id] 时它不起作用,并且它不适用于小计。我已经在调用变量“_Monthly_Weighted_Revenue_Fixed_Repeating”的表上尝试了 SUMX() 的各种迭代,但到目前为止没有一个有效。

MRW extended = 
VAR _CurrentMonth =
    MAX('Calendar'[Date])
VAR _CloseMonth = 
    CALCULATE(
        EOMONTH( MAX(Opportunity[CloseDate] ), 0 ),
        REMOVEFILTERS('Calendar')
    )
VAR _Monthly_Weighted_Revenue_Fixed = // stores the value corresponding with the single close date in a way it can be called from any period.
    CALCULATE(
        [Monthly Revenue Weighted],
        REMOVEFILTERS('Calendar')
    )
VAR _Monthly_Weighted_Revenue_Fixed_Repeating = // this repeats the above value for all future months.
    IF(
        _CurrentMonth >= _CloseMonth,
        _Monthly_Weighted_Revenue_Fixed,
        BLANK()
    )
RETURN _Monthly_Weighted_Revenue_Fixed_Repeating

24 年 8 月 21 日星期五更新:

我有以下代码暂时可以工作。

  • 接受重构建议。
  • 满足我上面两个所需的输出,但尚未使用报告过滤器或切片器测试意外结果。
Monthly Revenue Weighted =
SUMX(
    ADDCOLUMNS(
        CROSSJOIN( // returns a table with all combinations of opportunity[Id] and Date (as EOM)
            CALCULATETABLE( TREATAS ( DISTINCT( Opportunity[Id]), Opportunity[Id] ), REMOVEFILTERS('Calendar') ),
            TREATAS(DISTINCT('Calendar'[Date as EOM]),'Calendar'[Date])
        ),
        "closeDate", CALCULATE( EOMONTH(MAX(Opportunity[CloseDate]),0), REMOVEFILTERS('Calendar') ),
        "MRW" ,
        IF( // returns monthly weighted revenue beginning on the close date and continuing into future periods.
            'Calendar'[Date] >= CALCULATE( EOMONTH(MAX(Opportunity[CloseDate]),0), REMOVEFILTERS('Calendar') ),
            CALCULATE(
                [Annual Revenue Weighted] / 12,
                REMOVEFILTERS('Calendar')
            ),
            BLANK()
        )
    ),
    [MRW]
)
powerbi dax powerbi-desktop
1个回答
0
投票

2024 年 8 月 21 日星期五更新: 我有以下代码暂时可以工作。

Monthly Revenue Weighted =
SUMX(
    ADDCOLUMNS(
        CROSSJOIN( // returns a table with all combinations of opportunity[Id] and Date (as EOM)
            CALCULATETABLE( TREATAS ( DISTINCT( Opportunity[Id]), Opportunity[Id] ), REMOVEFILTERS('Calendar') ),
            TREATAS(DISTINCT('Calendar'[Date as EOM]),'Calendar'[Date])
        ),
        "closeDate", CALCULATE( EOMONTH(MAX(Opportunity[CloseDate]),0), REMOVEFILTERS('Calendar') ),
        "MRW" ,
        IF( // returns monthly weighted revenue beginning on the close date and continuing into future periods.
            'Calendar'[Date] >= CALCULATE( EOMONTH(MAX(Opportunity[CloseDate]),0), REMOVEFILTERS('Calendar') ),
            CALCULATE(
                [Annual Revenue Weighted] / 12,
                REMOVEFILTERS('Calendar')
            ),
            BLANK()
        )
    ),
    [MRW]
)
© www.soinside.com 2019 - 2024. All rights reserved.