如何在 Power BI 中可视化具有独特月度目标的循环多年 KPI?

How can I visualize a revolving multi-year KPI with unique monthly targets in Power BI?

我需要帮助开发一种折线图方法,以可视化 24 个月内实际销售额与每月 KPI 销售目标的对比。

我们有一个年度销售目标,跟踪一次直到完成两年。目标第一年的每个月,我们都应该实现目标的 4.0%。第二年,每月目标变为4.3%。

2021 年目标:销售额 1,000,000 美元,截止日期为 2023 年 1 月 1 日

2022 年目标:销售额 2,000,000 美元,截止日期为 2024 年 1 月 1 日

仪表板视觉对象需要了解它正在查看从任何 X 年开始的目标,然后可视化计算的 24 个月的月度目标,直到 2 年后目标的到期日。目标金额不能硬编码,它因团队而异,并且可以根据某些因素在整个 2 年期间移动,因此它已经是一个计算的指标 [年度目标]。

我一直在思考 DAX、Power Query、数据模型关系,但每次都碰壁。似乎我需要以 24 个月为增量对数据进行分组,但我不知道如何进行。我也研究过将查询编辑器中的目标与原始数据合并,但这会重复目标值并使它们难以绘制。我无法弄清楚数据模型关系,因为与实际日期相关的原始销售数字与与任何给定基准年相关的目标 table 之间没有明确的联系。

目标table

Goal % | Goal Raw           |  Month    |   Year
4.0%   | Sales Goal*.04     |  January  |  Year 1
4.0%   | Sales Goal *.04    |  February |  Year 1
etc       etc
4.3%   | Sales Goal*.043    |  January  |  Year 2
4.3%   | Sales Goal *.043   |  February |  Year 2

销售额Table

    Sale     | Date             |  Month    |   
    000   | 10/15/2021       |  October  |  
    000   | 10/15/2021       |  October  |  
    00    | 10/15/2021       |  October  | 

我的最终可视化将基于这样的 table:

Sale    |   Sale % of Goal  |  Month Target Goal %    | Month   | Year 
 00  |   1%              |   4.0%                  | October | 2020
 00  |   1%              |   4.0%                  | October | 2020
 00  |   1%              |   4.3%                  | February| 2021
 00  |   1%              |   4.3%                  | February| 2021

所以您有一个衡量标准,可以为您 select 的任何年份提供 [Annual Goal]。我假设该度量可以通过一些切片器 Year 过滤,这将 return 正确年份(起点)的目标。

我们还假设您有某种 table 日历,您可以将其用作折线图的 X 轴。

然后您可以创建 2 个要在折线图上使用的度量:

//Measure 1
Annual Goal Cumulative = 
  VAR _year = SELECTEDVALUE(YearSlicer[Year])
  VAR _x_month = SELECTEDVALUE(Date[date])
  VAR _no_months = DATEDIFF(DATE(_year,1,1), _x_month, MONTH)

  VAR _pct_target = IF(_no_months <= 12, 
         _no_months * 0.04, 
         0.48 + (_no_months - 12) * 0.043)
  
  RETURN IF( _no_months >=0 && _no_months <= 24, 
     [Annual Goal] * _pct_target, 
     BLANK()
  )

//Measure 2
Sales Cumulative =
  VAR _year = SELECTEDVALUE(YearSlicer[Year])
  VAR _start_date = DATE(_year,1,1)

  VAR _x_month = SELECTEDVALUE(Date[date])
  VAR _no_months = DATEDIFF(_start_date, _x_month, MONTH)

  RETURN IF( _no_months >=0 && _no_months <= 24, 
     CALCULATE(SUM(sales[Sale]), 
        sales[Date] >= _start_date && 
        sales[Date] < EOMONTH(_x_month, 1) + 1 //watch out for the last day of month edge cases
     ),
     BLANK()
     )

将这 2 个度量值绘制在折线图上,您应该会看到销售进度与 24 个月内年度目标的差距。