You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI中使用DATESBETWEEN实现财年折线图可视化咨询

解决PowerBI非日历年3个财年折线图的实现方法

嘿,我来帮你搞定这个非日历年(财年截止6月30日)的折线图问题!咱们可以按以下步骤一步步来操作,确保三个财年的数据能完美对齐展示:

第一步:构建正确的财年日期表

PowerBI的时间智能函数依赖连续的日期表,而且我们需要给日期表添加财年相关的计算列,这样才能准确区分不同财年的周期。如果你的模型里还没有日期表,可以用下面的DAX公式创建:

Date Table = 
ADDCOLUMNS (
    // 覆盖你三个财年的所有日期范围
    CALENDAR (DATE(2015,7,1), DATE(2018,6,30)),
    // 计算财年:7月及以后属于下一年财年
    "财年", IF(MONTH([Date])>6, YEAR([Date])+1, YEAR([Date])),
    // 计算财年月份:7月=财年M1,6月=财年M12
    "财年月份", IF(MONTH([Date])>6, MONTH([Date])-6, MONTH([Date])),
    // 可选:添加财年周期标签,比如"FY16-M01"(对应2015年7月)
    "财年周期标签", "FY" & RIGHT(IF(MONTH([Date])>6, YEAR([Date])+1, YEAR([Date])),2) & "-M" & FORMAT(IF(MONTH([Date])>6, MONTH([Date])-6, MONTH([Date])),"00")
)

创建完后,记得把这个表标记为日期表(右键表 → 标记为日期表 → 标记为日期表),并且和你的Report表通过Date字段建立关系。

第二步:创建财年对应的收入度量值

根据你的需求,我们可以创建两种度量值:单月收入或者累计收入(就是你提到的"Revenue from Start")。

1. 单月财年收入度量值

如果要展示每个财年对应月份的收入,创建三个度量值分别对应三个财年:

财年1收入 = 
CALCULATE(
    SUM(Report[Revenue]),
    FILTER(
        ALL('Date Table'),
        'Date Table'[财年] = 2016 && // 对应2015.7-2016.6
        'Date Table'[财年月份] = MAX('Date Table'[财年月份])
    )
)
财年2收入 = 
CALCULATE(
    SUM(Report[Revenue]),
    FILTER(
        ALL('Date Table'),
        'Date Table'[财年] = 2017 && // 对应2016.7-2017.6
        'Date Table'[财年月份] = MAX('Date Table'[财年月份])
    )
)
财年3收入 = 
CALCULATE(
    SUM(Report[Revenue]),
    FILTER(
        ALL('Date Table'),
        'Date Table'[财年] = 2018 && // 对应2017.7-2018.6(修正你描述的笔误)
        'Date Table'[财年月份] = MAX('Date Table'[财年月份])
    )
)

2. 累计收入度量值(Revenue from Start)

如果要展示从财年开始到当前月份的累计收入,用下面的DAX:

财年1累计收入 = 
CALCULATE(
    SUM(Report[Revenue]),
    FILTER(
        ALL('Date Table'),
        'Date Table'[财年] = 2016 &&
        'Date Table'[财年月份] <= MAX('Date Table'[财年月份])
    )
)

同理复制修改财年编号,创建财年2和财年3的累计收入度量值。

第三步:构建折线图并设置

  • 插入折线图,将Date Table中的财年月份拖到横轴(可以右键横轴 → 格式 → 数字格式改为"00",显示为01-12,或者自定义格式为"MM月",对应7月到次年6月)
  • 将刚才创建的三个财年收入/累计收入度量值拖到纵轴
  • 在图例中重命名每个系列,比如把"财年1收入"改成"财年1(2015.7-2016.6)",这样更直观
  • 如果需要,还可以添加数据标签,让数值更清晰

补充:用DATESBETWEEN实现的方式

如果你更倾向于用DATESBETWEEN函数,也可以这样写度量值(以财年1累计收入为例):

财年1累计收入 = 
VAR CurrentFYMonth = MAX('Date Table'[财年月份])
VAR FY1EndDate = EOMONTH(DATE(2015,6,30), CurrentFYMonth)
RETURN
CALCULATE(
    SUM(Report[Revenue]),
    DATESBETWEEN(
        'Date Table'[Date],
        DATE(2015,7,1),
        FY1EndDate
    )
)

不过用财年和财年月份的筛选方式更灵活,不需要硬编码日期。

内容的提问来源于stack exchange,提问作者cnhtractor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:18