使用 Power BI 在同一图表中显示实际值和预测值


本文翻译自Alberto Ferrari的文章——《Showing actuals and forecasts in the same chart with Power BI》。在预算报告中,常见的要求是在同一折线图上显示未来的销售预测和实际销售量。 本文介绍如何使用DAX实现此目标。

用于此示例的数据模型包含两个表:销售表和预算表。这两个表通过一组关系链接到客户表、日期表和产品表。它们是销售表的强关系,销售表包含关键粒度的信息;以及预算表的弱关系,它必须以不同粒度链接到三个维度。
file

弱关系是Power BI的一个新功能我们将在以后的文章中详细讨论它们。我们使用模型的预算表来创建几个预测指标。在这里,我们的主要重点是能够准备一个像下面这样的图表:
file

在同一图表中的四条线分别表示这些值:

  • 绿色实线:YTD销售金额为本年至今的实际销售金额。因为我们只有截止到8月15日的销售额,8月之后的线会变为平坦。
  • 黑色虚线:YTD预测是本年度至今的预算。图表中显示预算相较于实际情况预测过低,因为销售额总是远远高于预期。
  • 红色虚线:YTD Sales & Forecast使用8月15日前的实际销售和8月15日后的预算信息,将这两个值混合在一起。这条线和YTD销售额之间的差异在8月底开始显现,因为8月份的15天已经使用预算值而不是实际值。
  • 青色虚线:YTD Adj销售及预测显示8月15日前的实际情况和调整后的预测值。调整后的预测是根据前几个月的预算与实际数字之间的差额对预算进行修正。

为了理解这些度量值的结果,下面的矩阵显示了不需要在图表中进行YTD计算的不同值:
file

演示模型中的预测度量是一段相当高级的DAX代码,它本身就需要一篇完整的文章去阐述。在本文中,我们对使用的预测方法没有进行详细的解释;我们的目标是解释如何计算下一个度量:剩余预测。
剩下的预测指标必须分析销售表,找出有销售的最后一天,然后计算预测值。代码如下:
file

关于这个公式有几个有趣的注意事项:在计算LastDateWithSales变量时,我们必须使用ALL来检索销售表的最后一个日期。如果没有ALL修饰符,该变量将计算筛选期间(或上下文)中销售的最后日期。这将返回不正确的数字。
另一个注意事项是在筛选Result变量中的日期时使用KEEPFILTERS。由于筛选器对DateKey列进行操作,而DateKey列是标记为日期表的表的主键,因此它将覆盖先前存在的所有筛选器。因此,需要KEEPFILTERS来强制在当前选择的时间段内进行计算。
您可以在2010年8月了解该度量值的工作方式。因为销售的最后一个日期是8月15日,所以剩余的预测量是在8月16日到8月底之间生成的预测。
剩下的预测值被Sales & Forecast度量值使用,Sales & Forecast 度量值简单的将两个基本的度量值相加:
file

请记住,这两项度量值可以很容易地求和,而无需任何额外的测试。实际上,剩余预测仅产生未来日期的价值 - 与此同时,销售额在未来日期不会产生任何价值。因此,在任何一天都有销售或预算; 两者都不会在同一时刻出现。
现在,来进行第二步:用以前的销售额来纠正预算。正如我们已经指出的那样,预算值过低。应用修正因子是一项需要谨慎处理的业务要求。在这个例子中,我们使用一种相当简单的方法:我们计算截至8月15日的预算和销售之间的百分比差异,然后我们使用这个百分比差异作为未来的修正因子。
以下是计算预算与销售之间百分比差异的度量值:
file

这项度量值比前一项度量值简单。它首先用Sales(lastdateWithSales)计算最后一个日期,然后用Sales(budgetComparison)计算当前年度的所有销售额(实际)和截至最后一个日期的预算。最后一部分只将差额转换成百分比,稍后将用于更新预算数字。
最后一步是在ADJ Sales&Forecast度量中使用此百分比,该度量计算截至8月15日的销售额以及调整后的剩余预测版本,并用以下百分比进行更正:
file

为了对上面的图表使用这些度量,需要将它们嵌入到YTD模式中:
file

正如您所看到的,要编写的代码并不复杂,而且结果非常好。这些措施只是一个完整预算解决方案的起点。不过,它们已经展示了如何在DAX中生成强大的结果,只要您开始掌握筛选器上下文并进行计算。

  • PowerPivot工坊原创文章,转载请注明出处!

    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊