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

面积图中30天周期同比对比出现天数偏差问题排查

最近30天与前30天DAX度量值及图表显示异常问题

我正在计算最近30天与前30天的数据对比,使用的DAX度量值如下:

当前30天度量值

Total Current 30 Days = 
CALCULATE(
    [Switch Currency],
    FILTER(
        'Calendar',
        'Calendar'[Date] >= TODAY() - 31 &&
        'Calendar'[Date] <= TODAY() - 2
    )
)

前30天度量值

Total Previous 30 Days = 
CALCULATE(
    'Costs Summary Table'[Sum of measures],
    FILTER(
        'Calendar',
        'Calendar'[Date] >= TODAY() - 61 &&  -- Go back 61 days to cover a full 30-day period before the previous 30 days
        'Calendar'[Date] <= TODAY() - 32    -- Go back 32 days to end 31 days ago
    )
)

将这两个度量值放入面积图后,出现以下情况:

  • Total Previous 30 Days:周期为4月25日至5月24日(共29天)
  • Total Current 30 Days:周期为5月25日至6月23日(共29天)

手动验证这两个周期确实是29天,但移除X轴月份后重叠显示时,一个显示30天,另一个显示31天。请问问题出在哪里?


问题根源与解决办法

1. DAX日期范围计算错误

你当前的公式本身就只能算出29天,不是30天:

  • 当前30天公式:TODAY()-31到TODAY()-2,天数计算为 (TODAY()-2) - (TODAY()-31) + 1 = 29
  • 前30天公式:TODAY()-61到TODAY()-32,天数计算为 (TODAY()-32) - (TODAY()-61) + 1 = 29
    这就是实际周期只有29天的核心原因。

2. 图表X轴的自动填充/分组问题

移除X轴月份后,Power BI图表会自动将X轴范围扩展到两个周期的最大跨度(比如从4月25日到6月23日),再加上如果你的日历表存在日期断档,或者开启了自动时间智能功能,就会导致视觉上显示的天数和实际数据周期不符,出现一个30天一个31天的错觉。


修正方案

第一步:修正DAX度量值,确保准确的30天周期

用DATESINPERIOD函数替代手动写FILTER,逻辑更清晰且不易出错:

当前30天(最近结束的完整30天,不含今天和昨天)
Total Current 30 Days = 
CALCULATE(
    [Switch Currency],
    DATESINPERIOD('Calendar'[Date], TODAY()-1, -30, DAY)
)

示例:若今天是6月24日,该公式会覆盖5月25日至6月23日,正好30天。

前30天(当前30天的上一个完整30天)
Total Previous 30 Days = 
CALCULATE(
    'Costs Summary Table'[Sum of measures],
    DATESINPERIOD('Calendar'[Date], TODAY()-31, -30, DAY)
)

示例:若今天是6月24日,该公式会覆盖4月25日至5月24日,正好30天。

第二步:解决图表重叠显示异常

  • 确保你的Calendar表是连续无缺失的完整日期表,时间智能函数依赖无断档的日期序列。
  • 在图表X轴设置中,将日期粒度固定为「天」,并关闭「自动时间智能」功能(在X轴字段的下拉菜单中操作),避免图表自动补全多余日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:01:19