首页 文章

如何使用DAX计算Power BI中的预计YTD

提问于
浏览
2

我在SSRS中有一份报告,其中包含我需要转换为DAX的计算 . 目标是计算 ProjectedYTD

enter image description here

但为了做到这一点,首先我必须计算当天的保费和预算 . 所以我在SSRS中这样做的方式是:

1) 我通过将当前的总预算除以本月的天数来计算当月的每日预算 . 因此,每天10月的预算是

2,579,757 / 31 = 83,217.97 .

2) 接下来,我将每天的预算乘以当月开始到今天之间的天数 . 所以,如果今天是10月27日那么

83,217.97 * 27 = 2,246,885

3) 最后一步是我将当月(10月)之前的整个预算添加到10月份的预算到今天:

23,385,769 + 2,246,885 = 25,632,654

然后我计算每个月的差异和直到今天的总和 .

Variance = (Total Premium - Budget till current day)/ Budget till current day * 100

这是:

(28,477,194 - 25,632,654) / 25,632,654 * 100 = 11.1%

最后计算 Projected YTD

(Total Budget for whole year  -  Budget till current day) * (1 + Variance) + TotalPremium

这是:

(30,148,763 - 25,632,654) * (1 + 0.11) + 28,477,174 = 33,494,470

所以我假设我必须在Power BI中创建所有这些变量,然后执行计算 .

在Power BI中我看到类似的东西:

enter image description here

.ipbx文件可以在这里访问:

https://www.dropbox.com/s/io1yumnqlrzj067/PremiumByDivisions.pbix?dl=0

请帮忙 .

更新1

乔,非常感谢你的时间 . 我认为它没有正确计算BudgetTillCurrentDay . 屏幕截图为25,965,526,是预算到10月底的总和 .

enter image description here

但我需要到今天为止 . 因此,如果今天是30日,那么2,579,757 / 31 * 30 = 2,496,539 - 这是从10月初到今天(10月30日)的预算

总和(截至9月底的全年预算)2,496,539 = 25,882,308 .

enter image description here

抱歉混淆 .

1 回答

  • 1

    进入我的解决方案之前的一些评论:

    • 您共享的文件中的数字与问题中的数字并不完全一致,因此希望此解决方案符合预期的数字 .

    • 此解决方案的末尾有一个屏幕截图,显示我正在处理的报告页面,以便您可以看到我正在使用的结构作为示例 .

    • 要评论你问题中的最后一句话,你在技术上不必做出所有这些措施;你可以将公式合并为一个(类似于我在下面的第一个预算相关公式中所做的那样),但我认为将它们分解为单独的措施,就像我做的那样,报告工作会更好 .


    在考虑预算之前,我在Premiums表中创建了一些措施,以便稍后简化其他公式 .

    PremiumsMTD = TOTALMTD(SUM(Premiums[Premium]), Dates[Date])
    
    PremiumsYTD = TOTALYTD(SUM(Premiums[Premium]), Dates[Date])
    

    首先,为了创建一个月初至今的预算指标,我使用了以下公式 . 一步一步,这个公式1)计算出该月的总天数,2)将该月的总预算除以天数,3)计算出该月过去的天数(全部)如果是过去的月份,如果是未来月份则为0,则是当前月份的当前日期),最后4)将每天的预算乘以已过去的天数 .

    BudgetMTD = 
    VAR DaysOfMonth = MAXX(Dates, DAY(EOMONTH(Dates[Date], 0)))
    VAR BudgetPerDayForMonth = SUM(BudgetData[Amount]) / DaysOfMonth
    VAR DaysInMonthToToday = MAXX(Dates,
        IF(Dates[Date] < TODAY(), DAY(Dates[Date]),
            IF(Dates[Date] > TODAY(), 0,
                DAY(TODAY())
            )))
    
    RETURN BudgetPerDayForMonth * DaysInMonthToToday
    

    接下来,对于YTD,只需使用Power BI的内置 TOTALYTD 功能(就像为Premiums措施所做的那样),使用新创建的BudgetMTD度量作为表达式,并将其过滤到非未来几天 .

    BudgetYTD = TOTALYTD(BudgetData[BudgetMTD], Dates[Date], Dates[Date] <= TODAY())
    

    然后,您可以通过使用之前创建的MTD和YTD度量进行简单的数学运算来获得差异 .

    BudgetVarianceMTD = (Premiums[PremiumsMTD] - BudgetData[BudgetMTD]) / BudgetData[BudgetMTD]
    
    BudgetVarianceYTD = (Premiums[PremiumsYTD] - BudgetData[BudgetYTD]) / BudgetData[BudgetYTD]
    

    这是我正在处理的报告页面 . 请注意,我使用的是矩阵(虽然它可以有许多不同的视觉效果),MonthName作为轴/类别 . 由于视觉是一个月粒,因此YTD值在同一视觉中没有一个好的存在位置(Power BI小计自动与自定义测量不匹配),这就是为什么有卡片的原因 . 年初至今的 Value 观 .

    Working report

相关问题